jax-rs consuming org.json.JSONObject 响应异常
jax-rs consuming org.json.JSONObject respsonds with Exception
我正在尝试构建一个应该消耗 json/x-application 数据的休息 api。现在我研究了两个库 javax.json-api 和 org.json 来处理数据。
示例JSON:
{
"error": "false",
"error_msg": "",
"version": "1.13.10",
"result": {
"malware": {
"finding1": {
"file": "/path/to/filep",
"malware": "{HEX}r2h.malware.blue.44"
}
}
},
"newest_version": "1.13.10"
}
如果我现在将其与 javax JsonObject 一起使用,它将起作用并且我可以继续我的代码。但是,如果我改为 post 这个数据并且我使用 org.json.JSONObject 我将在客户端收到响应:
无法识别的字段“错误”(class org.json.JSON对象),未标记为可忽略
试图在网络上找到回复,但我没有越过任何可以解释这一点的内容?
问候和感谢
首先你的 json 是有效的 json。第二件事你得到一个错误的回应,这意味着错误不在你的代码中。第三个错误是 "Unrecognized field" 这意味着客户端代码中的 POJO class 不包含字段 "error".
嗯,
我真的不知道是否有解决方案。最终 REST 架构风格不支持 JSONObject (org.json.JSONObject)。但是,解决方法非常简单,只需将 json 作为字符串使用(您仍然可以声明 HTTP 请求以强制执行类型 application/json)。
所以这可能如下所示:
@Path("/myendpoint")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String receiveRequest(String json) {
JSONObject jo = new JSONObject(json);
...
}
我正在尝试构建一个应该消耗 json/x-application 数据的休息 api。现在我研究了两个库 javax.json-api 和 org.json 来处理数据。
示例JSON:
{
"error": "false",
"error_msg": "",
"version": "1.13.10",
"result": {
"malware": {
"finding1": {
"file": "/path/to/filep",
"malware": "{HEX}r2h.malware.blue.44"
}
}
},
"newest_version": "1.13.10"
}
如果我现在将其与 javax JsonObject 一起使用,它将起作用并且我可以继续我的代码。但是,如果我改为 post 这个数据并且我使用 org.json.JSONObject 我将在客户端收到响应:
无法识别的字段“错误”(class org.json.JSON对象),未标记为可忽略
试图在网络上找到回复,但我没有越过任何可以解释这一点的内容?
问候和感谢
首先你的 json 是有效的 json。第二件事你得到一个错误的回应,这意味着错误不在你的代码中。第三个错误是 "Unrecognized field" 这意味着客户端代码中的 POJO class 不包含字段 "error".
嗯,
我真的不知道是否有解决方案。最终 REST 架构风格不支持 JSONObject (org.json.JSONObject)。但是,解决方法非常简单,只需将 json 作为字符串使用(您仍然可以声明 HTTP 请求以强制执行类型 application/json)。
所以这可能如下所示:
@Path("/myendpoint")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String receiveRequest(String json) {
JSONObject jo = new JSONObject(json);
...
}