【Java】步入JSONObject空间内存深坑的一天,详细教程。

【Java】步入JSONObject空间内存深坑的一天,详细教程。,第1张

【Java】步入JSONObject空间内存深坑的一天,详细教程。

我发现现在的自己都有一种预测,想到什么也就会发什么,不过这一条因为只会放生在编码中。
今日和大家分享一下,我步入的深坑,详细了解一下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"}

这样问题就让大家更加的清晰了,
自己的编码:

List list = 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一个对象内存发生变化吧。
修改:

List list = 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功能,自己脑子中有想不到的那一刻,分享到这里,希望大家不要入坑!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5612217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存