如何解析Java中的JSON

我有以下JSON文本。 我如何解析它以获取pageNamepagePicpost_id等?

{
   "pageInfo": {
         "pageName": "abc",
         "pagePic": "http://example.com/content.jpg"
    }
    "posts": [
         {
              "post_id": "123456789012_123456789012",
              "actor_id": "1234567890",
              "picOfPersonWhoPosted": "http://example.com/photo.jpg",
              "nameOfPersonWhoPosted": "Jane Doe",
              "message": "Sounds cool. Can't wait to see it!",
              "likesCount": "2",
              "comments": [],
              "timeOfPost": "1234567890"
         }
    ]
}

org.json库很容易使用。 示例代码如下:

import org.json.*;


JSONObject obj = new JSONObject(" .... ");
String pageName = obj.getJSONObject("pageInfo").getString("pageName");

JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++)
{
    String post_id = arr.getJSONObject(i).getString("post_id");
    ......
}

您可以从以下位置找到更多示例:解析Java中的JSON

可下载的jar:http://mvnrepository.com/artifact/org.json/json


为了举例,假设你有一个只有name Person类。

private class Person {
    public String name;

    public Person(String name) {
        this.name = name;
    }
}

Google GSON(Maven)

我个人最喜欢的JSON序列化/反序列化对象。

Gson g = new Gson();

Person person = g.fromJson("{"name": "John"}", Person.class);
System.out.println(person.name); //John

System.out.println(g.toJson(person)); // {"name":"John"}

更新

如果你想获得一个属性,你也可以使用Google库轻松完成:

JsonObject jsonObject = new JsonParser().parse("{"name": "John"}").getAsJsonObject();

System.out.println(jsonObject.get("name").getAsString()); //John

Org.JSON(Maven)

如果你不需要对象反序列化,但只需要获得一个属性,你可以尝试org.json( 或者看看上面的GSON例子!

JSONObject obj = new JSONObject("{"name": "John"}");

System.out.println(obj.getString("name")); //John

杰克逊(Maven)

ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue("{"name": "John"}", Person.class);

System.out.println(user.name); //John

  • 如果想从JSON创建JAVA对象,反之亦然,请使用GSON或JACKSON第三方JAR等。

    //from object to JSON 
    Gson gson = new Gson();
    gson.toJson(yourObject);
    
    // from JSON to object 
    yourObject o = gson.fromJson(JSONString,yourObject.class);
    
  • 但是,如果只想分析一个JSON字符串并获取一些值(或者从头创建一个JSON字符串以通过线路发送),那么只需使用包含JsonReader,JsonArray,JsonObject等的JaveEE Jar。您可能想要下载该实现规格像javax.json。 有了这两个罐子,我可以解析JSON并使用这些值。

    这些API实际上遵循XML的DOM / SAX分析模型。

    Response response = request.get(); // REST call 
        JsonReader jsonReader = Json.createReader(new StringReader(response.readEntity(String.class)));
        JsonArray jsonArray = jsonReader.readArray();
        ListIterator l = jsonArray.listIterator();
        while ( l.hasNext() ) {
              JsonObject j = (JsonObject)l.next();
              JsonObject ciAttr = j.getJsonObject("ciAttributes");
    
  • 链接地址: http://www.djcxy.com/p/5085.html

    上一篇: How to parse JSON in Java

    下一篇: How do I parse XML in Python?