json对象的合并
最近接触到k8s的声明式api,突然想到当已经有一个json,然后又声明了一个新json的时候,两个json对象应该如何合并的问题。
查看了下fastjson的api,原来已经有接口实现
public static void main(String[] args) { String s1="{\"a\":1,\"c\":[1,2,3]}"; String s2="{\"a\":3,\"b\":2,\"c\":[4,5]}"; JSONObject jsonObject1 = JSON.parseObject(s1); JSONObject jsonObject2 = JSON.parseObject(s2); System.out.println("s1="+jsonObject1); System.out.println("s2="+jsonObject2); jsonObject2.putAll(jsonObject1); System.out.println("s2="+jsonObject2); String s3="[1,2,3]"; String s4="[4,5]"; JSONArray array1 = JSON.parseArray(s3); JSONArray array2 = JSON.parseArray(s4); System.out.println("s3="+array1); System.out.println("s4="+array2); array2.addAll(array1); System.out.println("s4="+array2); }
输出:
s1={"a":1,"c":[1,2,3]}
s2={"a":3,"b":2,"c":[4,5]}
s2={"a":1,"b":2,"c":[1,2,3]}
s3=[1,2,3]
s4=[4,5]
s4=[4,5,1,2,3]
从输出看,可以明白json合并的基本原则,JSONObject跟map的put基本相同,
1.如果新旧的json有相同的key,则用新的value覆盖旧的value
2.如果旧的json没有key,而新json有的key,则直接将新key添加到旧json
3.如果旧json有key,而新json没有key,则保留就的json的key
JSONArray的合并逻辑基本与list相同,就是把新的元素加入到旧的array中,不考虑相同元素的冲突
浙公网安备 33010602011771号