从零开始认识并了解JSON

  • 作者:39℃
  • 来源:56gee
  • 更新时间:2013-01-28 21:02:22
  • 点击:3173
[80分]

JSON 定义 概念

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式 ,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

一、JSON建构有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构——

1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object)、纪录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list),或者关联数组 (associative array)。 而对象在js中表示为“{}”扩起来的内容,其数据结构为 {attr:value,attr:value,...}的键值对的结构。在面向对象的语言中,attr为对象的属性,而value为对应的属性值,所以很容易理解,取值方法为对象.attr 获取属性值,这个属性值的类型可以是 数字、字 符串、数组、对象几种。

2、值的有序列表(An ordered list of values)——在大部分语言中,它被理解为数组(array)。 而数组在js中是中括号“[]”扩起来的内容,数据结构为 ["asp","javascript","ajax",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

二、JSON的几种表现方式

1、对象是一个无序的“‘名称/值’对”集合——一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后面跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔(如图2-1所示)。

JSON 定义 概念
图2-1

2、数组是值(value)的有序集合——一个数组以“[”(左中括号)开始,“]”(右中括号)结束,值之间使用“,”(逗号)分隔(如图2-2所示)。

JSON 定义 概念
图2-2

3、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),而且这些结构是可以嵌套的(如图2-3所示)。

JSON 定义 概念
图2-3

4、字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义——一个字符(character)即一个单独的字符串(character string);字符串(string)与C和Java的字符串非常相似(如图2-4所示)。

JSON 定义 概念
图2-4

5、数值(number)也与C和Java的数值非常相似——除去未曾使用的八进制与十六进制格式和一些编码细节(如图2-5所示)。

JSON 定义 概念
图2-5

三、JSON两种结构的简单实例

1、表示“名称/值”——

{ "sitename": "56gee" } 这个示例非常基本,虽然实际上比等效的纯文本"名称 / 值对"(sitename=56gee)占用更多的空间;但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:

{ "sitename": "56gee", "author":"39℃", "homepage": "www.56gee.com"}

从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值就有了某种联系。

2、表示数组——

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少其复杂性。例如你想表示一个网站的结构列表。在 XML 中,需要许多开始标记和结束标记;但如果使用JSON时,可以将多个花括号的记录分组在一起:

var NavInfor = {"Nav":[

{"Column":"酷站欣赏","Kinds":"23","Records":"1600"},

{"Column":"设计欣赏","Kinds":"8","Records":"480"},

{"Column":"素材设计","Kinds":"5","Records":"1024"}

]}

该实例不难理解——只有一个名为Nav的变量,值是包含三个条目的数组,每个条目是具体一个Nav的记录,其中包含“栏目名称”、“栏目种类”和“记录数”。上面的实例是演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(花括号里面嵌套同类型的数据格式)。

3、数据访问

Json的数据访问方式类似于JS的对象访问(其实Json可以看作为实例化)。像上述2中的实例:NavInfor.Nav[0].Column得到的值是"酷站欣赏"。规律就是:定义中的名称逐级访问;如果是数组,则用相应的格式(如"Nav"是数组,Nav[0]表示数组的第一条记录,如此类推)。

 

收藏内容
评分

特别说明:本站所有资源仅供学习与参考,请勿用于商业用途。若转载请注明来自56gee.com中的“来源”。

栏目精华