jax-rs使用org.json.JSONObject respsonds with Exception

时间:2018-04-14 10:24:35

标签: java jax-rs org.json javax.json

我正在尝试构建一个应该使用json / x-application数据的rest 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使用它,它将工作,我可以继续我的代码。但是,如果我发布此数据并使用org.json.JSONObject,我将在客户端收到回复:

无法识别的字段"错误" (类org.json.JSONObject),未标记为可忽略

试图在网上找到回复,但我没有介绍解释这个问题的任何内容?

问候并致谢

2 个答案:

答案 0 :(得分:0)

首先,你所有的json都是有效的json。第二件事是你得到一个错误的响应,这意味着错误不在你的代码中。第三件事错误是“无法识别的字段”,这意味着客户端代码中的POJO类不包含字段“错误”。

答案 1 :(得分:0)

好吧,

我真的不知道是否有解决方案。最终,REST架构风格不支持JSONObject(org.json.JSONObject)。但是,解决方法非常简单,只需将json作为String使用(仍然可以声明HTTP请求以强制执行类型application / json)。

所以这可能如下所示:

@Path("/myendpoint")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String receiveRequest(String json) {
    JSONObject jo = new JSONObject(json);
...
}