问题描述
我在调用API时反应迟钝。
Response postRequestResponse = ConnectionUtil.getwebTarget()
.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION,true)
.path("bots")
.path(ReadSkillID.readSkillId())
.path("dynamicEntities").path(dynamicEntityID)
.path("pushRequests").path(pushRequestID).path(operation)
.request()
.header("Authorization","Bearer " + ConnectionUtil.getToken())
.get();
下面我得到的输出。
{
"createdOn": "2020-08-17T12:19:13.541Z","updatedOn": "2020-08-17T12:19:23.421Z","id": "C84B058A-C8F9-41F5-A353-EC2CFE7A1BD9","status": "TRAINING","statusMessage": "Request Pushed into training,on user request"
}
我必须将此输出返回给客户端,并在响应中添加一个附加字段。如何修改上述响应并使之响应
{
"EntityName": "NewEntity",//New field
"createdOn": "2020-08-17T12:19:13.541Z",on user request"
}
我在这里添加此附加字段 “ EntityName”:“ NewEntity”
我该怎么做。我做了很多尝试,但都遇到了异常。
解决方法
- 从
postRequestResponse
获取JSON(我不知道您使用的是什么框架,因此您必须自己弄清楚它,但是Response数据类型可能会有getResponseBody或类似的方法来重现JSON) - 添加EntityName
- 再次将其序列化为json。
class YourBean { @Autowired private ObjectMapper objectMapper; public void yourMethod() { // 1 final InputStream jsonFromResponse = ... // 2 Map dataFromResponse = objectMapper.readValue(jsonFromResponse,Map.class); dataFromResponse.put("EntityName","NewEntity"); // 3 final String enrichedJson = objectMapper.writeValueAsString(dataFromResponse); } }
enrichedJson
包含EntityName以及来自API的任何内容。