首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAX-RS使用JSON并使用javax.json读取它

JAX-RS使用JSON并使用javax.json读取它
EN

Stack Overflow用户
提问于 2014-07-14 07:29:47
回答 3查看 1.3K关注 0票数 0

如何从post中使用json并使用javax.json读取它

如何在不添加更多依赖项或将json与实体bean关联的情况下完成此操作?

json (application/json)

代码语言:javascript
复制
{"employees":[
   {"firstName":"John", "lastName":"Doe"}, 
   {"firstName":"Anna", "lastName":"Smith"},
   {"firstName":"Peter", "lastName":"Jones"}
]}

服务器

代码语言:javascript
复制
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces("text/plain")
    public String receiveJSON( whatShouldIput data ){

      JsonReader reader = Json.createReader(data );
      JsonObject obj = reader.readObject();
      JsonArray results = obj.getJsonArray("data");
      for (JsonObject result : results.getValuesAs(JsonObject.class)) {
          System.out.print(result.getJsonObject("employees").getString("firstName"));
          System.out.print(" ");
          System.out.println(result.getString("lastName", ""));
          System.out.println("-----------");
     }

        return "ok";
    }
EN

回答 3

Stack Overflow用户

发布于 2014-07-14 08:50:28

使用Apache CXF API可以很容易地做到这一点。您必须提供直接将json数据转换为对象的json提供程序。Ideally, we should not write marshalling or unmarshalling code service implementation.

http://cxf.apache.org/docs/jax-rs.html

或者,如果您想解封json数据,请使用ObjectMapper of jackson framework

http://wiki.fasterxml.com/JacksonInFiveMinutes

票数 0
EN

Stack Overflow用户

发布于 2015-06-17 22:05:36

"whatShouldIput“应该是"String”类型。还需要做一些其他的调整。下面是一个使用您的输入的示例程序。

代码语言:javascript
复制
    public static void main(String[] args) {
    String input = "{\"employees\":["
            + "{\"firstName\":\"John\", \"lastName\":\"Doe\"},"
            + "{\"firstName\":\"Anna\", \"lastName\":\"Smith\"},"
            + "{\"firstName\":\"Peter\", \"lastName\":\"Jones\"}" + "]}";
    System.out.println(receiveJSON(input));
}

public static String receiveJSON(String data) {

    try (StringReader sReader = new StringReader(data);
            JsonReader reader = Json.createReader(sReader)) {
        JsonObject obj = reader.readObject();
        JsonArray results = obj.getJsonArray("employees");
        for (JsonObject result : results.getValuesAs(JsonObject.class)) {
            System.out.print(result.getString("firstName"));
            System.out.print(" ");
            System.out.println(result.getString("lastName", ""));
            System.out.println("-----------");
        }
        return "ok";
    }
}

输出:

代码语言:javascript
复制
John Doe
-----------
Anna Smith
-----------
Peter Jones
-----------
ok
票数 0
EN

Stack Overflow用户

发布于 2015-06-17 22:12:17

至少在泽西,只需将其声明为JsonObject:

代码语言:javascript
复制
public String receiveJSON( JsonObject data )

它会自动为你解析

还请参见https://jersey.java.net/documentation/latest/media.html#json.json-p来设置依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24731560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档