gson 如何将伪客户端响应作为JSONObject处理

bvuwiixz  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(178)

服务A以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获取值。
提前致谢!

sd2nnvve

sd2nnvve1#

默认情况下使用jackson序列化-反序列化的Spring启动。由于返回的对象是gson类型,因此添加以下属性可以接收类型为的正确响应:JSON对象。

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

但这影响了其他控制器和客户端行为,因为所有东西都开始期待gson对象(无法反序列化JSONObjects)。
相反,在伪客户端将返回类型标记为Object,并在服务层使用Gson()进行类型转换,会有所帮助。

相关问题