JSON数组对象和对象数组

json数组对象和对象数组

一、Json的简单介绍 
      从结构上看,所有的数据最终都可以分成三种类型: 
      第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。 
  第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。 
  第三种类型是mapping(映射),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作hash(散列)或dictionary  (字典),比如“首都:北京”。 
 

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它的规则非常简单并且是有趣的: 
  1) 并列的数据之间用逗号(“,”)分隔。 
  2) 映射用冒号(“:”)表示。 
  3) 并列数据的集合(数组)用方括号("[]")表示。 
  4) 映射的集合(对象)用大括号(“{}”)表示。 
 

  按照这个规则可以作以下理解: 


  1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的; 
  2.无论是数组还是对象,之间的元素都用“,”隔开; 
  3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值; 
  4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。 

二、事例 


  1. var china= {beijing:{name:"北京",area:"16000",haidian:{name:"海淀区"}}, 
    shanghai:{name:"上海",area:"10000",minhang:{name:"闵行区"}}}; 
    alert(china.beijing.haidian.name); 
    alert(china.shanghai.minhang.name); 
    分别弹出“海淀区”和“闵行区”。 
    2. 
    var ourcountry=[["北京市"],["上海市"],["合肥市","芜湖市","蚌埠市"]]; 
    alert(ourcountry[2][1]); 
    弹出“芜湖市”。 
    3. 
    var zhongguo={provinces:[{name:"北京",cities:[{name:"北京市",quxian:["海淀区","朝阳区","东城区","西城区"]}]}, 
    {name:"安徽省",cities:[{name:"芜湖市",quxian:["繁昌县","芜湖县","南陵县","三山区"]},{name:"合肥市",quxian:["肥西县","蜀山区","庐阳区"]}]}, 
    "湖北省" 
    ]}; 
    var str = "中国:{\n"; 
    for(var i = 0; i < zhongguo.provinces.length; i++) 

    if(zhongguo.provinces.cities != null) 

    str += zhongguo.provinces.name + "{"; 
    for(var j = 0; j < zhongguo.provinces.cities.length; j++) 

    if(zhongguo.provinces.cities[j] != null) 

    str += zhongguo.provinces.cities[j].name + "{"; 
    for(var k = 0; k < zhongguo.provinces.cities[j].quxian.length; k++) 

    str += zhongguo.provinces.cities[j].quxian[k]; 
    if(k != zhongguo.provinces.cities[j].quxian.length - 1) 

    str += ","; 


    str += "}"; 


    str += "}\n"; 


    str += "}"; 
    alert(str); 
    弹出“ 
    中国:{ 
    北京{北京市{海淀区,朝阳区,东城区,西城区}} 
    安徽省{芜湖市{繁昌县,芜湖县,南陵县,三山区}合肥市{肥西县,蜀山区,庐阳区}} 
    } ”。 

三、JsonAjax中的应用 

  

       1>  jQuery插件支持的转换方式: 

       代码如下:

       $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr);

      可以将json字符串转换成json对象


      2> 浏览器支持的转换方式(Firefoxchromeoperasafariie9ie8)等浏览器: 

      代码如下:
      JSON.parse(jsonstr);      //可以将json字符串转换成json对象 
      JSON.stringify(jsonobj); //
可以将json对象转换成json对符串 

      注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。 

     3>  Javascript支持的转换方式: 
     eval('(' + jsonstr + ')');  

     //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号。 

   注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全,eval会执行json串中的表达式。 

     4>  JSON官方的转换方式: 
     http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()parse()方法; 
     可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

 

  本文系摘抄和整理,如有疑义可留言。

posted @ 2013-11-01 20:28  F.陈峰  阅读(368)  评论(0编辑  收藏  举报