根据字面理解,append 是在后面追加,而 put 则是直接放进去,并不清楚区别到底是什么,特此测试。
发现 append(key,value) 会把 value 包装成一个数组。
JSONArray arr=new JSONArray("[1,2,3,4]");
JSONObject a=new JSONObject();
JSONObject obj=new JSONObject();
obj.put("putArr", arr).put("putObj", a);
obj.append("appendArr", arr).append("appendObj", a);//put 和 append 区别
System.out.println(obj.toString());//区别结果
//a.put("key", "value");
a.append("key1", "value1");//测试引用传值
System.out.println(obj.toString());
a.put("key2", "value2");
System.out.println(obj.toString());
输出结果为:
{"appendArr":[[1,2,3,4]],"putArr":[1,2,3,4],"appendObj":[{}],"putObj":{}}
{"appendArr":[[1,2,3,4]],"putArr":[1,2,3,4],"appendObj":[{"key1":["value1"]}],"putObj":{"key1":["value1"]}}
{"appendArr":[[1,2,3,4]],"putArr":[1,2,3,4],"appendObj":[{"key1":["value1"],"key2":"value2"}],"putObj":{"key1":["value1"],"key2":"value2"}}
同时还可以发现,虽然第二个输出语句输出的 appendObj 和 putObj 与第一个不同,说明 append 是通过引用传递的,同时测试 put 也是引用传递。