gpt4 book ai didi

java - 比较Json Array的对象并显示具有相同参数的对象

转载 作者:行者123 更新时间:2023-12-02 02:40:57 27 4
gpt4 key购买 nike

我有一个包含四个对象的 json 数组。

{"name":"Ram", "email":"ram@gmail.com", "age":23}, 
{"name":"Shyam", "email":"shyam23@gmail.com", "age":28},
{"name":"John", "email":"john@gmail.com", "age":23},
{"name":"Bob", "email":"bob32@gmail.com", "age":41}

我想迭代 json 对象并显示具有相同年龄的人的详细信息。我正在使用Java。我是 json 新手。任何人都可以建议如何继续。我正在使用 json.org 库。

我已经走到这一步了:

public static void main(String[] args) {
String text="{\"name\":\"Ram\", \"email\":\"ram@gmail.com\", \"age\":23}"
+ "{\"name\":\"Shyam\", \"email\":\"shyam23@gmail.com\", \"age\":28}"
+ "{\"name\":\"John\", \"email\":\"john@gmail.com\", \"age\":23}"
+ "{\"name\":\"Bob\", \"email\":\"bob32@gmail.com\", \"age\":41}";
String changed=text.toString();
int pos=changed.lastIndexOf("}");
String change=changed.substring(0,pos );
change=change.replace("}", "},");
String res=change.concat("}");
String msg="["+res+"]";
JSONArray json=new JSONArray(msg);
for(int i=0;i<json.length();i++){
JSONObject obj= json.getJSONObject(i);
}
}

最佳答案

public class JSONThing {

public void change() {

String text = "{\"name\":\"Ram\", \"email\":\"ram@gmail.com\", \"age\":23}"
+ "{\"name\":\"Shyam\", \"email\":\"shyam23@gmail.com\", \"age\":28}"
+ "{\"name\":\"John\", \"email\":\"john@gmail.com\", \"age\":23}"
+ "{\"name\":\"Bob\", \"email\":\"bob32@gmail.com\", \"age\":41}";
String changed = text.toString();
int pos = changed.lastIndexOf("}");
String change = changed.substring(0, pos);
change = change.replace("}", "},");
String res = change.concat("}");
String msg = "[" + res + "]";
JSONArray json;
try {
json = new JSONArray(msg);
Map<Integer, List<JSONObject>> mapp = new HashMap<>();
for (int i = 0; i < json.length(); i++) {
JSONObject obj = json.getJSONObject(i);
List<JSONObject> list = mapp.getOrDefault(obj.getInt("age"),new ArrayList<>());
list.add(obj);
mapp.put(obj.getInt("age"),list);
}

System.out.println(mapp);
for (Entry<Integer, List<JSONObject>> entry : mapp.entrySet())
{
ListIterator<JSONObject> i=entry.getValue().listIterator();
System.out.println(entry.getKey());
//System.out.println(entry.getKey() + "/" + entry.getValue());
while(i.hasNext()){
System.out.println(i.next());
}
}

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) {
JSONThing j = new JSONThing();
j.change();
}

}

实现这个,它将打印所有具有相同年龄的用户。

关于java - 比较Json Array的对象并显示具有相同参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45480933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com