我有一个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));
}我正在考虑创建一个新的JSONArray对象和包含卡洛斯的复制节点。问题-
任何帮助都将不胜感激。
发布于 2015-03-24 08:31:29
您可以首先创建Map(String,Object),并将所有JSON对象添加到Map中。
我通常做的是从JSON对象创建一个模型。例如,创建Person对象并将JSON数组解析为List(Person)。
在您的示例中,您可以创建一个Map(String,Person),键名为givenName。然后,您可以使用集合来做您想做的事情:对它进行排序,循环它,创建一个比较器等等。
发布于 2015-03-24 08:39:15
创建一个类
class BO{
String givenName;
String familyName;
String formattedName;
String middleName;
String honorificPrefix;
String honorificSuffix;
}您可以使用葛森库(或任何其他库)将json对象解析为java对象。一旦为每个json对象都拥有了java对象,就创建一个它们的集合。
实现比较器接口,您可以根据需要对对象进行比较。
https://stackoverflow.com/questions/29219170
复制相似问题