栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号