服务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获取值。
提前致谢!
1条答案
按热度按时间sd2nnvve1#
默认情况下使用jackson序列化-反序列化的Spring启动。由于返回的对象是gson类型,因此添加以下属性可以接收类型为的正确响应:JSON对象。
但这影响了其他控制器和客户端行为,因为所有东西都开始期待gson对象(无法反序列化JSONObjects)。
相反,在伪客户端将返回类型标记为
Object
,并在服务层使用Gson()
进行类型转换,会有所帮助。