2017-01-30 1 views
0

필드 이름 중 하나에 점 및 @ 기호가있는 JSON을 나타내는 파일을 .proto 수동으로 모델링하려고합니다. 점 (.) 또는 @이 허용되지 않는다고 명시 적으로 말하지 않는 오류가 나타납니다. 필드 이름이 @odata.nextLink이 때, 자바 프로토 라이브러리를 구축하는 동안 오류 메시지가 수신, Expected field name. 및 필드 이름이 odata.nextLink이있을 때,protobuf - 특수 문자가있는 필드 이름

Missing field number. 주위를 작동 할 수있는 방법이 있습니까? Jackson은 JSON 표현에서 실제 필드 이름을 지정할 수있는 JsonProperty 주석을 가지고 있으며 Java 클래스에서 정상 필드 이름을 선택할 수 있습니다.

궁금한 점이 있다면, 이것은 Open Data Protocol과 관련이 있습니다. 여기서 그 명명 규칙은 다음과 같습니다.

+0

JSON으로하는 일이 정확히 명확하지 않습니다. 수동으로 모델링하거나 .proto 파일을 자동 생성하거나 다른 것을 사용합니까? 어떤 언어로 이것을 파싱합니까? –

+0

@JonSkeet 수동으로 .proto를 모델링하고 생성 된 모델에 JSON을 역 직렬화하려고합니다. – asgs

+0

알겠습니다. 질문에 해당 정보와 함께 사용중인 언어를 포함하십시오. –

답변

1

항상 작업 할 수있는 방법이 있습니다. :) 그러나 노력할만한 가치가 있는지 확신 할 수 없습니다. 우선, PB 필드는 in Java generated code뿐만 아니라 in proto files이라는 엄격한 명명 규칙을 사용합니다. 특수 문자를 넣을 해킹이 필요 없습니다. 주석은 간단한 방법이 아닙니다. Java 원시 코드가 생성되므로 주석을 추가하기 위해 컴파일러를 수정해야합니다. 기술적 인 측면에서 보면 opensource입니다. >_@ -

당신이 수동으로 프로토 파일을 모델링 걸 말했듯이 당신에게 달려 :) 실제적으로 ... 내 추천, 컨벤션 (말을 명명의 어떤 종류를 구성 .을 교체하는 것입니다,의 - >_at_). 그런 다음 Odata 이름을 번역하고 Java Reflection을 통해 getters/setter를 호출합니다.

+0

예, 해킹해야한다고 생각했습니다. 응답 주셔서 감사합니다! – asgs