用javascript对一个json数组深度赋值示例

用javascript对一个json数组深度赋值

代码如下所示:

<!DOCTYPE HTML> <html> <head> <title>test1</title> </head> <body> <script> var arr={ "name":"zhansan", "age":23, "address":{ "city":"beijing", "gas":{ "gasSheet":"气态流出物月报", "H_adjust":1 }, "time":{ "duration":31 } }, "units":{"title":"function"} } function show(obj){ var tmp={}; for(var i in obj){ if(obj[i]=="object"){ <span style="color:#ff0000;">tmp[i]=show(obj[i]</span> } else{ <span style="color:#ff0000;">tmp[i]=obj[i]</span> } } return tmp; } var result=show(arr console.log(result </script> </body> </html>

</pre><p></p><p>利用递归思想,其中注意赋值语句</p><p>可用于不同的环境</p><p></p><pre>

如何将一个jSON对象赋值给一个jSON数组

假设其中jSON对象是var kpis = {"A": 1,2,3,4,5,"B": 2,3,4,5,6},  jSON 数组是var series =  {name:null,data:null},  {name:null,data:null}

第一种方法:

[javascript] view plain copy var index=0; for( var tests in kpis){ series[index].name=tests; series[index].data=kpis[tests]; }

点评:第一种方法对于超过两个名称/值对的情况不适用,只能手动增加jSON数组的长度,比较麻烦。经过boss的指导,有了第二种方法。

第二种方法:

[html] view plain copy series=[]; for(var tests in kpis){ //定义一个新的jSON对象,改变成jSON数组中jSON数据的格式 var json = {name:tests, data:kpis[tests]}; //通过数组的push()方法向数组中增加jSON数据 series.push(json }

点评:第二种方法,在遍历kpis这个jSON对象的时候,生成新的格式的jSON对象,不断push到数组中,这样就达到了目的,而且即使是有名称/值对也不怕,通用性增强。

所以推荐第二种方法。