【问题标题】:jax-rs consuming org.json.JSONObject respsonds with Exceptionjax-rs 使用 org.json.JSONObject 响应异常
【发布时间】:2018-04-14 10:24:34
【问题描述】:

我正在尝试构建一个应该使用 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),未标记为可忽略

试图在网络上找到响应,但我没有跳过任何解释这一点的内容?

问候和感谢

【问题讨论】:

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


    【解决方案1】:

    嗯,

    我真的不知道是否有解决方案。最终 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);
    ...
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但就是这样,我还没有将任何东西映射到任何 pojo。这就是让我对此感到困惑的地方。
      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 2022-12-15
      相关资源
      最近更新 更多