1

現在、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")

ここでは自動キャストのアプローチは考えられないので、アイデアをいただければ幸いです。

4

1 に答える 1

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);
于 2015-09-16T19:09:13.577 に答える