java json相加_JAVA,当某个json数据中一个字段与另一个json数据中的字段值相同时,对两个json进行合并且相加,...
展開(kāi)全部
要判斷json數(shù)據(jù)的字段62616964757a686964616fe78988e69d8331333365636634與其他數(shù)據(jù)是否相同,那么肯定是要先解析json數(shù)據(jù)。解析json數(shù)據(jù)的方式很多,Gson、FastJson都是很簡(jiǎn)便實(shí)用的工具。這里以Gson為例。import?java.lang.reflect.Type;
import?java.util.*;
import?com.google.gson.Gson;
import?com.google.gson.reflect.TypeToken;
public?class?Divination?{
public?static?void?main(String[]?args)?{
String?jsonStr?=?"[{\"depid\":\"5\",\"score\":\"10\"},{\"depid\":\"4\",\"score\":\"40\"},{\"depid\":\"4\",\"score\":\"30\"},{\"depid\":\"5\",\"score\":\"30\"}]";
System.out.println("原始的json字符串:"?+?jsonStr);
//?解析
Gson?gson?=?new?Gson();
Type?type?=?new?TypeToken>()?{
}.getType();
ArrayList?list?=?gson.fromJson(jsonStr,?type);
//?合并
List?ordered?=?new?ArrayList<>();
Map?map?=?new?HashMap<>();
for?(JsonData?jsonData?:?list)?{
JsonData?data?=?map.get(jsonData.getDepid());
if?(data?!=?null)?{?//?depid相同的合并score字段
data.setScore(data.getScore()?+?jsonData.getScore());
}?else?{
map.put(jsonData.getDepid(),?jsonData);
ordered.add(jsonData);
}
}
//?還原為json字符串
System.out.println("合并后json字符串:"?+?gson.toJson(map.values()));
System.out.println("合并后json字符串(按原來(lái)的順序):"?+?gson.toJson(ordered));
}
}
class?JsonData?{
private?int?depid;
private?int?score;
public?int?getDepid()?{
return?depid;
}
public?void?setDepid(int?depid)?{
this.depid?=?depid;
}
public?int?getScore()?{
return?score;
}
public?void?setScore(int?score)?{
this.score?=?score;
}
}
以上代碼中List ordered = new ArrayList<>();是為了按原json數(shù)組的順序輸出合并后的結(jié)果,如果對(duì)順序無(wú)要求可以刪除相關(guān)代碼。
運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的java json相加_JAVA,当某个json数据中一个字段与另一个json数据中的字段值相同时,对两个json进行合并且相加,...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java继承关键字super_java学
- 下一篇: lsm tree java_LSM-tr