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 변환하는 올바른 방법 인 경우 I는 확실하지 않다. 누군가 내가 잘못하고 있는지, 아니면 이것을 달성하기 위해 다른 방법을 제안 해 주시겠습니까? 나는 protobuf 버전 2.6에 있고 정말로이 프로젝트를 위해 3까지 움직일 수 없다.
감사하지만 난 내 protobuf 메시지를 생성 된 자바 클래스의 객체로 역 직렬화 JSON을 얻을 기대했다. 어쨌든 중간 표현으로 변환해야한다면 아마 gson 대신에 스프레이의 json 라이브러리를 사용할 것입니다. – user2903819
주석을 추가하기 위해 생성 된 proto Java 클래스를 변경하여 다른 속성 이름을 언급하는 것은 바람직하지 않습니다. 그래서 속성 이름을 사용하여 json을 구문 분석하고 PROTO java 클래스에 매핑했습니다. – notionquest