JSON节点JSONArray中的操作

时间:2015-03-23 19:55:16

标签: java json

我有一个JSONArray,它有多个对象。我需要实现方面的帮助,以便所有包含 givenName:Carlos 的节点必须在排序中排在首位。

    {
       "personList":   [
            {
                "givenName": "Jim",
                "formattedName": "jimJackson",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mr",
                "honorificSuffix": "none"
            },
            {
                "givenName": "john",
                "formattedName": "johnLasher",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mr",
                "honorificSuffix": "none"
            },
            {
                "givenName": "carlos1",
                "formattedName": "carlosAddner",
                "familyName": null,
                "middleName": "none",
                "honorifiPrefix": "mr",
                "honorificSuffix": "none"
            },
            {
                "givenName": "lisa",
                "formattedName": "lisaRay",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mrs",
                "honorificSuffix": "none"
            },
            {
                "givenName": "carlos2",
                "formattedName": "bradshawLion",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mr",
                "honorificSuffix": "none"
            },
            {
                "givenName": "phill",
                "formattedName": "phillKane",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mr",
                "honorificSuffix": "none"
            },
            {
                "givenName": "carlos3",
                "formattedName": "gabrielMoosa",
                "familyName": null,
                "middleName": "none",
                "honorificPrefix": "mr",
                "honorificSuffix": "none"
            } 
  ]
}

代码片段,用于显示输出

上的所有节点
JSONArray jsonArray= (JSONArray) jsonObject.get("personList");

for (int i = 0; i < jsonArray.size(); i++) {
    System.out.println(jsonArray.get(i));


}

我正在考虑创建一个包含Carlos的新JSONArray对象和复制节点。问题 -

  1. 如何将特定节点复制到New JSONArray?
  2. 我知道JSONArray没有订购,但是我可以用这些节点对它们进行排序 特别的关键/价值?
  3. 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以先创建一个Map(String,Object),然后将所有JSON对象添加到Map中。

我通常做的是从JSON对象创建一个Model。例如,创建一个Person对象并将JSON数组解析为List(Person)。

在您的情况下,您可以创建一个Map(String,Person),其键为givenName。然后你可以用Collection做你想做的事:对它进行排序,循环遍历,创建一个Comparator等。

答案 1 :(得分:0)

创建一个类

class BO{
 String givenName;
 String familyName;
 String formattedName;
 String middleName;
 String honorificPrefix;
 String honorificSuffix;
}

您可以使用Gson库(或任何其他)将json对象解析为java对象。 一旦你拥有了每个json对象的java对象,就可以创建它们的集合。

实现comparator界面,您可以根据需要比较对象。

相关问题