2016-09-07 12 views
2

grpc 서비스를 이전하기 위해 기존 서비스를 이전 할 계획입니다. 따라서 서비스를 프로토콜 정의 된 메시지 유형으로 변환해야합니다. 응답에는 사용자 정의 객체를 키로 사용하여 맵이 있습니다.지도 필드의 키는 부동/더블, 바이트 또는 메시지 유형이 될 수 없습니다.

예를 들어 응답 : 공식 문서에서

//java 
Map<key_object, Project> 

//proto 
map<key_object_not_supported, Project> projects = 3; 

, 그들은 언급, 지점 유형을 떠을 제외하고 key_type 그래서 어떤 정수 또는 문자열 유형 (수 있습니다

, 어떤 스칼라 유형 및 바이트). value_type은 어떤 유형이든지

proto3에서 사용자 정의 객체 키 맵을 얻기위한 다른 방법이 있습니까?

답변

1

지도에 대한 지원은 다소 새로운 확장입니다. 키가 제약 조건과 일치하지 않으면 이전 방법을 대신 사용할 수 있습니다.

키 쌍 메시지를 정의하고이를 반복 필드로 사용하십시오. 따라서 귀하의 예 :

message KeyValuePair { 
    key_object_not_supported key = 1; 
    Project value = 2; 
} 

message MyMap { 
    repeated KeyValuePair entries = 1; 
}