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);
...
}