我发现现在的自己都有一种预测,想到什么也就会发什么,不过这一条因为只会放生在编码中。
今日和大家分享一下,我步入的深坑,详细了解一下jsonobject,虽然是小问题,不过大家也是要好好避免下。
问题描述:
简单的来说,有个JSONObject类型的j’son,里面有
json.put("aa",1111); json.put("bb",2222); json.put("cc",3333); json.put("dd",4444);
另外有个JSONObject类型的jsonObject,里面有
jsonObject.put("a","a"); jsonObject.put("b","b"); jsonObject.put("c","c"); jsonObject.put("d","d");
想要结果
{"aa":1111,"bb":2222,"cc":3333,"dd":4444,"a":"a"} {"aa":1111,"bb":2222,"cc":3333,"dd":4444,"b":"b"} {"aa":1111,"bb":2222,"cc":3333,"dd":4444,"c":"c"} {"aa":1111,"bb":2222,"cc":3333,"dd":4444,"d":"d"}
这样问题就让大家更加的清晰了,
自己的编码:
Listlist = new ArrayList<>(); JSONObject json = new JSONObject(); json.put("aa",1111); json.put("bb",2222); json.put("cc",3333); json.put("dd",4444); JSONObject jsonObject = new JSONObject(); jsonObject.put("a","a"); jsonObject.put("b","b"); jsonObject.put("c","c"); jsonObject.put("d","d"); for (Map.Entry map:jsonObject.entrySet()) { JSONObject js = new JSONObject(json); js.put(map.getKey(),map.getValue()); list.add(js); } for (JSONObject i:list) { System.out.println(i); }
结果:
真是意想不到呀,结果new JSonObject(json);竟然没有开辟新空间,让人搞不懂,最后一条数据覆盖了前面的数据。可能这就是分配内存的魅力吧!大家感兴趣可以看看new一个对象内存发生变化吧。
修改:
Listlist = new ArrayList<>(); JSONObject json = new JSONObject(); json.put("aa",1111); json.put("bb",2222); json.put("cc",3333); json.put("dd",4444); JSONObject jsonObject = new JSONObject(); jsonObject.put("a","a"); jsonObject.put("b","b"); jsonObject.put("c","c"); jsonObject.put("d","d"); for (Map.Entry map:jsonObject.entrySet()) { JSONObject js = new JSONObject(); BeanUtil.copyProperties(json,js); js.put(map.getKey(),map.getValue()); list.add(js); } for (JSONObject i:list) { System.out.println(i); }
建议大家出现这样的问题吗,多使用debug功能,自己脑子中有想不到的那一刻,分享到这里,希望大家不要入坑!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)