當前位置:成語大全網 - 書法字典 - JAVA,當壹個json數據中的壹個字段與另壹個json數據中的字段相同時,兩個json數據合並相加。

JAVA,當壹個json數據中的壹個字段與另壹個json數據中的字段相同時,兩個json數據合並相加。

要判斷json數據的字段是否與其他數據相同,那麽必須先解析json數據。解析json數據的方法有很多,Gson和FastJson是非常簡單實用的工具。這裏以Gson為例。

進口?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?分數)?{

這個.分數?=?分數;

}

}列表

運行結果: