协慌网

登录 贡献 社区

Java 如何解析 JSON

2
88250
贡献值 91
贡献次数 2

对于如下 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"
         }
    ]
}

答案

1
88250
贡献值 85
贡献次数 1

为了示例,我们假设您有一个只有name Person类。

private class Person {
    public String name;

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

谷歌 GSONMaven

我个人最喜欢的是对象的优秀 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.jsonMaven

如果您不需要对象反序列化但只需获取属性,您可以尝试 org.json( 或者查看上面的 GSON 示例!

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

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

jacksonMaven

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

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