如何正确克隆一个json对象到另一个。 [英] How do I correctly clone one json object to another .

查看:399
本文介绍了如何正确克隆一个json对象到另一个。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将一个json说json1复制到另一个json说json2。似乎价值被淹没,即,如果我把价值放在json1的一个关键字中,那就是key1。 json2的key1值被覆盖。



我尝试过:



Works:

JSONObject json1 = new JSONObject();

json1.put(a,new JSONObject()。put(c,1))。 put(b,2);

JSONObject json2 = new JSONObject();

Iterator itr = json1.keys(); //从源代码复制json to destinationJson

while(itr.hasNext()){

String key =(String)itr.next();

json2.put (key,json1.get(key));

}

json1.put(b,3);

out.print (json1+ json1);

out.print(json2+ json2);



这里,值b没有被覆盖。



但是如果把价值放在c中。它被覆盖了。似乎两个jsons共享相同的内存。



JSONObject subjson = json1.getJSONObject(a);

subjson.put(a,2);

out.print(json1+ json1);

out.print(json2+ json2);



那我怎么解决呢? :( ..

I am trying to copy one json say json1 to another json say json2. It seems values get overwrited ie., if am putting value in one key say key1 of json1. key1 value of json2 get overwritted.

What I have tried:

Works :
JSONObject json1 = new JSONObject();
json1.put("a",new JSONObject().put("c",1)).put("b","2");
JSONObject json2 = new JSONObject();
Iterator itr = json1.keys();//copying json from source to destinationJson
while(itr.hasNext()) {
String key = (String) itr.next();
json2.put(key, json1.get(key));
}
json1.put("b",3);
out.print("json1"+json1);
out.print("json2"+json2);

here , value b didnot get overwrite .

but if put value in c. It get overwritted. seems a of two jsons share same memory.

JSONObject subjson = json1.getJSONObject("a");
subjson.put("a",2);
out.print("json1"+json1);
out.print("json2"+json2);

So how can i solve it ? :( ..

推荐答案

您谈论深度和浅层克隆。以下是更多信息。了解Javascript中的对象克隆 - 部分。我 [ ^ ]

You talk about deep and shallow cloning. Here is more information. Understanding Object Cloning in Javascript - Part. I[^]
function naiveShallowCopy( original )  
{
    // First create an empty object
    // that will receive copies of properties
    var clone = {} ;

    var key ;

    for ( key in original )
    {
        // copy each property into the clone
        clone[ key ] = original[ key ] ;
    }

    return clone ;
}


这篇关于如何正确克隆一个json对象到另一个。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆