# JAVA 객체 -> gRPC Proto 객체
JAVA 객체를 gRPC proto 객체로 컨버팅을 할 때
ObjectMapper 클래스를 사용할 수 있다. 이 ObjectMapper로 JAVA 객체를 Serialize하여 JSON String을 만들고
다시 이 JSON String을 gRPC proto 객체로 해석하는 것이다.
MyJavaObj javaObj = new MyJavaObj();
ObjectMapper mapper = new ObjectMapper();
# JAVA 객체 -> JSON
String json = mapper.writer().writeValueAsString(javaObj);
# gRPC proto 객체의 builder를 얻어옴
Builder builder = MyGrpcProtoObj.getDefaultInstanceForType().newBuilderForType();
# JSON -> gRPC proto 객체
JsonFormat.parser().merge(json, builder);
MyGrpcProtoObj protoObj = builder.build();
하나 주의할 점은 이 변환을 하면서 JAVA 객체와 JSON 사이의 Timestamp 포맷이 맞지 않아 오류가 발생한다.
이 경우 아래처럼 mapper의 SerializationFeature.WRITE_DATES_AS_TIMESTAMPS 옵션을 disable 시켜주면 된다.
MyJavaObj javaObj = new MyJavaObj();
ObjectMapper mapper = new ObjectMapper();
# Timestamp 포맷 처리
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
# JAVA 객체 -> JSON
String json = mapper.writer().writeValueAsString(javaObj);
# gRPC proto 객체의 builder를 얻어옴
Builder builder = MyGrpcProtoObj.getDefaultInstanceForType().newBuilderForType();
# JSON -> gRPC proto 객체
JsonFormat.parser().merge(json, builder);
MyGrpcProtoObj protoObj = builder.build();
# gRPC Proto 객체 -> JAVA 객체
반대로,
gRPC 객체를 JAVA 객체로 변환하려면 위의 과정과 반대로 진행하면 된다.
MyGrpcProtoObj protoObj;
# gRPC proto 객체 -> JSON
String json = JsonFormat.printer().includingDefaultValueFields().print(protoObj);
# JSON -> JAVA 객체
ObjectMapper mapper = new ObjectMapper();
return mapper.reader().readValue(json, MyJavaObj.class);
반응형
'Development Experience > Web' 카테고리의 다른 글
Vue에서 글자 옆에 사각형을 그릴 때.. (0) | 2022.08.22 |
---|---|
JAVA Optional of() vs ofNullable() (0) | 2022.04.01 |
MyBatis Mapper 사용 안하기 (exclude DataSourceAutoConfiguration) (0) | 2022.04.01 |
postman으로 전송한 DTO가 계속 null로 온다면.. (0) | 2021.03.29 |
JPA 사용 도중 DB에 값이 있는데도 findById()가 empty라면.. (0) | 2021.03.29 |