Что ж, нет ярлыка, чтобы сделать это, согласно моим выводам, но каким-то образом вы можете достичь этого за несколько простых шагов.
Сначала вам нужно объявить bean-компонент типа ProtobufJsonFormatHttpMessageConverter.
@Bean
@Primary
public ProtobufJsonFormatHttpMessageConverter protobufHttpMessageConverter() {
return new ProtobufJsonFormatHttpMessageConverter(JsonFormat.parser(), JsonFormat.printer());
}
Затем вы можете просто написать класс Utility, например ResponseBuilder, потому что он может анализировать запрос по умолчанию, но без этих изменений он не может создавать ответ Json. а затем вы можете написать несколько методов для преобразования типов ответа в связанный с ним тип объекта.
public static <T> T build(Message message, Class<T> type) {
Printer printer = JsonFormat.printer();
Gson gson = new Gson();
try {
return gson.fromJson(printer.print(message), type);
} catch (JsonSyntaxException | InvalidProtocolBufferException e) {
throw new ApiException(HttpStatus.INTERNAL_SERVER_ERROR, "Response conversion Error", e);
}
}
Затем вы можете вызвать этот метод из своего класса контроллера в последней строке, например:
return ResponseBuilder.build(<returned_service_object>, <Type>);
Надеюсь, это поможет вам реализовать protobuf в формате json.
person
Bharat
schedule
25.01.2019