0
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 stringを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つまで移動することはできません。
おかげで私は私のいるProtobufメッセージ用に生成されたJavaクラスのオブジェクトにデシリアライズJSONを取得するために期待していました。とにかく中間表現に変換しなければならない場合は、gsonの代わりにスプレーのjsonライブラリを使用します。 – user2903819
アノテーションを追加するために生成されたproto Javaクラスを変更して、異なる属性名を記述することはお勧めできません。そこで、属性名を使ってjsonを解析し、それをPROTO javaクラスにマップしました。 – notionquest