在泽西休息服务中将Json请求作为Json对象使用的方法

时间:2013-10-18 14:03:19

标签: json rest jersey

嗨我试过谷歌搜索但找不到我想要达到的解决方案。

将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。但它是我想要避免的一个开销。

编辑:我愿意使用像JsonNode等任何Json库...只要我直接获得Json对象的结构,而不需要从我这边获得String到Json的开销。这应该是常用的,或者我在这里错过了一些核心概念。

3 个答案:

答案 0 :(得分:2)

这是一个直接的解决方案,我碰巧忽略了......我的坏。 泽西比我想象的更聪明......想知道层下发生什么魔法

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

答案 1 :(得分:0)

您使用的是哪个web.xml配置?它与web.xml setup gists for Jersey1 and Jackson2类似吗?

答案 2 :(得分:0)

如果您使用与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;
}