進口?Java . lang . reflect . type;
進口?Java . util . *;
進口?com . Google . gson . gson;
進口?com . Google . gson . reflect . type token;
公共?班級?占蔔?{
公共?靜電?作廢?main(String[]?args)?{
字符串?jsonStr?=?"[{\"depid\":\"5\ ",\"score\":\"10\"},{\"depid\":\"4\ ",\"score\":\"40\"},{\"depid\":\"4\ ",\"score\":\"30\"},{\"depid\":\"5\ ",\ " score \ ":\ " 30 \ " }]";
System.out.println("原始json字符串:"?+?JSON str);
//?分析
Gson?gson?=?新的?gson();
類型?類型?=?新的?TypeToken & ltArrayList & ltJsonData & gt& gt()?{
}.getType();
ArrayList & ltJsonData & gt?列表?=?gson.fromJson(jsonStr,?類型);
//?合並
列表& ltJsonData & gt?訂購?=?新的?ArrayList & lt& gt();
地圖& lt整數,?JsonData & gt?地圖?=?新的?HashMap & lt& gt();
為了什麽?(JsonData?jsonData?:?列表)?{
JsonData?數據?=?map . get(JSON data . get depid());
如果?(數據?!=?null)?{?//?合並具有相同depid的分數字段
data.setScore(data.getScore()?+?JSON data . get score());
}?不然呢?{
map.put(jsonData.getDepid(),?JSON data);
ordered . add(JSON data);
}
}
//?還原到json字符串
System.out.println("合並的json字符串:"?+?gson . tojson(map . values()));
System.out.println("合並的json字符串(按原順序):"?+?gson.toJson(有序));
}
}
班級?JsonData?{
私人?int?depid
私人?int?分數;
公共?int?getDepid()?{
回歸?depid
}
公共?作廢?setDepid(int?depid)?{
這個,戴普?=?depid
}
公共?int?getScore()?{
回歸?分數;
}
公共?作廢?setScore(int?分數)?{
這個.分數?=?分數;
}
}列表
運行結果: