日期:2014-05-16  浏览次数:20251 次

js操作json数据的一些感受

? ? ? 最近在搞 json 数据传输,直接用的 javascript 对数据进行操作。json数据为:

? ? ? var json ={ "global":"200", "camera":[{"key2":"F5.6","key3":"35mm" }], "jam":[ {"Red":"100"}, {"Yellow":"300"}, {"Green":"500"}] };

? ? ? 现在我想要的效果是 根据“global”、“camera”、“jam”这些 key 值来遍历里面的内容,而且这些 key 事先是不定的,根据传递过来的参数确定 key 值。
? ? ?js 函数为 :
funciton test(id){
   // id 为传进来的key值

  for(var item in json[id])
     {
           for(var key in json[id][item])
             alert("key=" + item + "value=" + json[id][item][key] );
      }
}
?? ?
? ? ? 这样就可以得到最外层 key 值为 id 的object中的 key 值和对应的 value 了。
? ? ? 起初看 json 取数据时,看似很简单,只要知道key值便可以,比如 json.global、json.camera.key2、json.jam.Red ,但这些是通过“.”这个操作符实现的,必须确定key 值,而且这个 key 值无法通过变量来改变(或许可以,但是我还不知道)。
? ? ? 其实后来我发现,用“.” 这个操作符操作,是把数据当做是一个 object 来操作了,而如果通过“[]”来操作,便把数据当做是list,所以每个“{ }”便是一个元素。
? ? ? global的第一个元素 json["global"][0]为“200”,再用[]取值得到“2”、“0”、“0”;
? ? ? json["camera"][0]为{"key2":F5.6,"key3":35mm},取到的值分别为json["camera"][0]["key2"]=F5.6和json["camera"][0]["key3"]=35mm;
? ? ? 而jam取到的为 json["jam"][0]["Red"]=100, json["jam"][1]["Yellow"]=300, json["jam"][2]["Green"]=500。