如何在Java中流畅地解析和遍历JSON对象

时间:2015-09-16 18:59:24

标签: java json json-simple

我目前在Java中使用json-simple库来处理JSON对象。大多数时候,我从一些外部Web服务获取JSON字符串,需要解析和遍历它。即使是一些不太复杂的JSON对象,也可能是相当长的打字练习。

我们假设我有一个跟随字符串作为responseString:

{
  "employees": [
    {
      "firstName": "John",
      "lastName": "Doe"
    },
    {
      "firstName": "Anna",
      "lastName": "Smith"
    },
    {
      "firstName": "Peter",
      "lastName": "Jones"
    }
  ],
  "title": "some company",
  "headcount": 3
}

要获得3d员工的姓氏,我必须:

JSONObject responseJson = (JSONObject) JSONValue.parse(responseString);
JSONArray employees = (JSONArray) responseJson.get("employees");
JSONObject firstEmployee = (JSONObject) employees.get(0);
String lastName = (String) firstEmployee.get("lastName");

至少这样的事情。在这种情况下不会太长,但可能会变得复杂。

对我来说有没有办法(也许可以转换到其他Java库?)来更简化流畅的方法?

String lastName = JSONValue.parse(responseString).get("employees").get(0).get("lastName")

我想不出任何自动播放方法,所以会欣赏任何想法。

1 个答案:

答案 0 :(得分:1)

尝试Groovy JsonSlurper

println new JsonSlurper().parseText(json).employees[0].lastName

输出:

Doe

但最佳解决方案是JsonPath - 输入

String name = JsonPath.parse(json).read("$.employees[0].lastName", String.class);
System.out.println(name);