message Example {
enum State {
Deleted = 1;
Inactive = 2;
Active = 4;
}
optional uint64 id = 1 [(gson_name) = "id"];
optional uint64 state = 2 [(gson_name) = "state"];
optional uint64 userId = 3 [(gson_name) = "uui"];
optional sint32 marketId = 4 [(gson_name) = "m"];
optional uint64 productId = 5 [(gson_name) = "p"];
}
Json СтрокаКак преобразовать строку json в объект сообщения protobuf?
v: String = {"m": 97, "state": 1, "uui": 1, "id": 1, "p": 1}
вызовов для преобразования с помощью JSON, который выходит из строя.
gson.fromJson(v, classOf[Example])
Исключение java.lang.NullPointerException
Я не уверен, если это правильный способ преобразования JSON в генерируемый прото класса. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно или, возможно, предложим какой-то другой метод для этого. Я на protobuf версии 2.6 и не могу переместить до 3 для этого проекта.
Спасибо, но я надеялось получить JSON десериализованный в объект класса Java, созданный для моей Protobuf сообщения. Я бы, вероятно, использовал json-библиотеку спрей вместо gson, если мне все равно нужно преобразовать в промежуточное представление. – user2903819
Не рекомендуется изменять класс proto Java, сгенерированный для добавления аннотации, чтобы указать разные имена атрибутов. Итак, проанализировал json, используя имена атрибутов, и сопоставил его с классом класса PROTO java. – notionquest