2017-11-27 2 views
1

나는 proto3에서 필드가 설정되어 있는지 여부를 알 수있는 기능을 제거했습니다. 해결책으로 여러 사이트에서 읽었으므로 래퍼 메시지에 원시를 포함시킬 수 있습니다.내부 protobuf 메시지를 가져 오는 방법은 무엇입니까?

here에서 볼 수 있듯이 protobuf는 내가 필요한 것을 정확하게 수행하기 위해 wrappers.proto 아래에 몇 가지 내부 패키지를 가지고 있습니다.

wrappers.proto 파일을 복사하여 내 시스템에 붙여 넣은 다음 다른 파일 A.proto에서 가져 와서 사용할 수 있습니다.

그러나 궁금 :

  1. 내부 래퍼를 사용하는 것이 좋은 선택이 될 것인가?

  2. 그렇다면 파일 사본을 직접 만드는 대신 병에서 직접 가져올 수 있습니까?

는 (나는 그들의 항아리 디렉토리를 사용하여 가져올 시도했지만 작동하지 않았다)

import "lib/protobuf-java-3.5.0.jar/com/protobuf/wrappers.proto"; --> fails 

동안 :

import "resources/protoBeans/wrappers.proto"; --> my own copy --> works 

답변

1

당신이 할 수있는, 그리고 아마를 작성하는 것이 바람직 할 것 별도로 - 하위 메시지는 이진 크기와 처리에 약간의 오버 헤드를 추가하고 동일한 것을 달성하기 위해 optional 필드를 사용하는 proto2 메시지와 유선 호환이되지 않습니다. "wrappers.proto"는 이미 protoc의 바이너리 위치 아래에 있어야합니다. 일반적인 용도는 다음과 같을 수 있습니다

syntax = "proto3"; 
import "google/protobuf/wrappers.proto"; 

message Foo { 
    .google.protobuf.Int32Value foo = 1; 
} 

"wrappers.proto"을 사용하기보다는 스스로를 다시 구현의 또 다른 장점은 맞춤형 JSON 처리 및 더 나은 "와"잘 알려진 유형 "으로 간주하는 것입니다 모든 "지원.

관련 문제