JSON

json数组对象 对象数组的使用方法

字号+ 作者:H5之家 来源:H5之家 2015-10-31 08:11 我要评论( )

一、Json的简单介绍 从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如

  一、Json的简单介绍

  从结构上看,所有的数据最终都可以分成三种类型:

  第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。

  第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。

  第三种类型是mapping(映射),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作hash(散列)或dictionary(字典),比如“首都:北京”。

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它的规则非常简单并且是有趣的:

  1) 并列的数据之间用逗号(“,”)分隔。

  2) 映射用冒号(“:”)表示。

  3) 并列数据的集合(数组)用方括号("[]")表示。

  4) 映射的集合(对象)用大括号(“{}”)表示。

  2.无论是数组还是对象,之间的元素都用“,”隔开;

  3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值;

  4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。

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

  1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的;

  二、事例

  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);   弹出“   中国:{   北京{北京市{海淀区,朝阳区,东城区,西城区}}   安徽省{芜湖市{繁昌县,芜湖县,南陵县,三山区}合肥市{肥西县,蜀山区,庐阳区}}   }   ”。

 

  三、Json在Ajax中的应用

  客户端可以给服务器端通过地址栏或者post很容易的提交数据,但是服务器端处理完数据之后,将计算的结果信息回传给客户端时就存在了一定的难度,特别是数据量较大时。这个时候数据的格式成了关键,按照某种格式可以很方便的进行数据的组装,然后可以很方便的进行解析。使用Json便是一种很好的策略。在服务器端,按照Json的格式拼装好一个字符串,响应给客户端。客户端如何进行解析呢?一般有两种策略(两种策略的名称是自己给的名字,不一定很合理,但是思路应该是没有问题的):

  1.直接解析

  var json = eval('(' + result + ')');

  通过上面这个表达式,就完成了将服务器端响应给客户端的Json格式的字符串解析成了一个Json(格式的)对象,名称为“json”,通过“json.”或者“json[]”的方式便可进行数据访问。

  2.间接解析

  var json = "r=" + result;

  eval(json);

  当然上面行代码可以合并为:eval("r=" + result);

  通过上面的计算,也可以将服务器端响应给客户端的Json格式的字符串解析成了一个Json(格式的)对象,但是该对象名称为“r”,通过“r.”或者“r[]”的方式可进行数据访问。

  总结:Json是一种简单的数据交换格式,它几乎可以很好的代替xml让服务器之间灵活的交换数据。

  四、JavaScript中的数组和对象

  在JavaScript中,通常用[]创建的数据格式称为数组,用{}创建的东西称为对象。

  有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么到底该用哪一种呢?

  其实数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评
r