Как я могу добавить дополнительное поле при маршалинге сообщения Go Protobuf в JSON?

Я хотел бы сериализовать сообщение Protobuf в JSON в Go. Загвоздка в том, что я хочу добавить дополнительное поле для хранения имени типа сообщения в представлении JSON для сохранения. Я взглянул на новый Protobuf Go API v2, основанный на отражении, но я не могу понять, как динамически добавить поле в существующее сообщение Protobuf с помощью этого API. Мое сообщение Protobuf также содержит поля с другими сообщениями Protobuf, поэтому мне нужно было бы перебрать всю структуру, чтобы добавить поле «тип» к каждому сообщению Protobuf. У вас есть решение этой проблемы?

Почему вы не можете добавить дополнительное поле перед сериализацией, это было бы проще, иначе вам нужно найти что-то для анализа Json и добавить поле в строку

Mrinal Kamboj 30.03.2021 09:40

@MrinalKamboj Спасибо за ваш комментарий. Можно было бы добавить поле «тип» к каждому сообщению, определенному в файле proto. Дело в том, что мне нужно это поле типа только для сериализации JSON, поэтому было бы здорово, если бы я мог определять это поле только тогда, когда оно мне действительно нужно. И мне в любом случае нужно было бы перебрать сообщение и все сообщения в полях сообщения, чтобы правильно установить значение этого поля «тип».

jevon 30.03.2021 14:25
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
2
21
0

Другие вопросы по теме