Как обработать притворный ответ клиента как JSONObject

#spring-boot #gson #microservices #feign

Вопрос:

Обслуживайте возвращаемый ответ как gson.JSONObject. Из Службы B звонит в Службу A с Притворным клиентом. Как справиться с ответом? Попробовал ниже:

 @FeignClient(name = "ABC") public interface TestDataProviderApi {  @GetMapping(value = "/v1/path/{data-type}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)  **JsonObject** getData(@PathVariable("data-type") String dataType); }  @FeignClient(name = "ABC") public interface TestDataProviderApi {  @GetMapping(value = "/v1/path/{data-type}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)  **Object** getData(@PathVariable("data-type") String dataType); }  @FeignClient(name = "ABC") public interface TestDataProviderApi {  @GetMapping(value = "/v1/path/{data-type}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)  **JSONObject** getData(@PathVariable("data-type") String dataType); }  

Ничего не помогало. Либо ответ печатается в виде исключений {}, либо в формате JSON. Но в сервисе A в журналах говорится, что он вернул правильный JSON, например {«a»:1}. Как обработать значение? Конечная цель состоит в том, чтобы прочитать ответы от притворного клиента и получить значение с помощью Jayway JSONPath.

заранее спасибо!

Комментарии:

1. вы не можете вернуть ResponseEntitylt;Объектgt;?

Ответ №1:

Весенняя загрузка с использованием сериализации Джексона-де-сериализация по умолчанию. Поскольку возвращаемый объект имеет тип gson, добавление приведенного ниже свойства помогло получить правильный ответ с типом: JSONObject.

 spring.http.converters.preferred-json-mapper=gson  

Но это повлияло на поведение других контроллеров и клиентов, так как все начало ожидать объектов gson (не удалось удалить сериализацию JSONObjects).

Вместо этого при притворной маркировке клиента возвращаемый тип как Object и в слое обслуживания используется преобразование типов с Gson() помощью.