【问题标题】:Way to Consume Json request as Json object in Jersey Rest Service在 Jersey Rest Service 中使用 Json 请求作为 Json 对象的方法
【发布时间】:2013-10-18 14:03:18
【问题描述】:

您好,我尝试谷歌搜索,但找不到我想要实现的解决方案。

将 json 映射到我们所做的 java 对象的示例

 @POST
 @Consumes(application/json)
 @Produces(application/json)
 public Response createUpdateDeleteManualClinicalData(MyJavaPojo definedPojo) {
   // this maps any json to a java object, but in my case I am dealing with generic json structure
}

我想要实现的是将其保留为 json 对象本身

public Response createUpdateDeleteManualClinicalData(JSONObject json)

解决方法:我可以获取纯文本形式的数据并将其转换为 json。但这是我想避免的开销。

编辑:我愿意使用任何 Json 库,如 JsonNode 等……只要我直接获得 Json 对象结构,而不会从我身边对 Json 产生 String 的开销。这应该是常见的用法,还是我在这里遗漏了一些核心概念。

【问题讨论】:

  • 为什么要使用 JSONObject 如果您可以提供更多细节,我可以提供更有吸引力的解决方案。但是我的解决方案,如果你想要一个与 json 的键值关系,你可以使用 hashmap。
  • 我很想看到您将有效负载转换为地图的解决方案,但我也希望直接拥有 json 对象,我可以将其传递给我的基础架构中想要处理相同请求的不同源。

标签: json rest jersey


【解决方案1】:

这是一个我碰巧忽略的直接解决方案……我的错。 泽西岛比我想象的要聪明得多……很想知道这些层下会发生什么魔法

@POST
 @Consumes(application/json)
 @Produces(application/json)
 public Response createUpdateDeleteManualClinicalData(JsonNode jsonNode) {
//jsoNode body casted automatically into JsonNode
}

【讨论】:

    【解决方案2】:

    您使用的 web.xml 配置是什么?是不是和这里的web.xml setup gists for Jersey1 and Jackson2类似?

    【讨论】:

    • 是的。我用的是同样的东西
    【解决方案3】:

    如果您使用与web.xml setup gists for Jersey1 and Jackson2 相同的配置,那么您可以执行以下操作。这是使用 JSONObject 的可能替代方法

    @POST
    @Path("/sub_path2")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String,Object> saveMethod( Map<String,Object> params  ) throws IOException {
    
        // Processing steps
    
        return params;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 2015-10-23
      • 2012-06-29
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多