我有一个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对象和复制节点。问题 -
任何帮助将不胜感激。
答案 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界面,您可以根据需要比较对象。