JSON
一、JSON的简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写,同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
(1)JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构,事实上大部分现代计算机语言都以某种形式支持它们,这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
(2)JSON具有以下这些形式:
1. 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
3. 值(value)可以是双引号括起来的字符串(string)、数值(number)、true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
4.字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
5 . 数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
二、JSON的语法
■对象是包含在括号({ }),它们的名称-值对的分离逗号(,)以及一对中的名称和值用冒号分隔(:)。的名字在一个对象中是字符串,而值可能是7个值类型中的任意一个,包括另一个对象或数组。
■数组是包含在方括号([]),和它们的值是由一个逗号分开(,)。数组中的每个值都可能是另一种类型,包括另一个数组、一个对象。当对象和数组包含其他对象或数组时,数据具有树状结构。
三、JSON的使用
JSON通常被用作序列化和反序列化数据的通用格式。在因特网上相互通信的应用程序,这些应用程序是使用不同的编程语言创建的,并且运行的方式非常不同。JSON适合这个场景,因为它是一个开放的标准,很简单。读和写,它比其他表示更紧凑。rest式web服务广泛地使用JSON作为请求内部数据的格式和响应。用于表示请求或请求的内容的HTTP头。响应是JSON数据。内容类型:application / json
JSON表示通常比XML表示更紧凑,因为JSON没有结束标记。与XML不同,JSON没有被广泛接受用于定义和验证JSON数据结构的模式。
四、生成和解析JSON数据
对于生成和解析JSON数据,有两种编程模型(类似于用于XML文档的):
■对象模型创建一个树在内存中表示JSON数据。这棵树然后可以导航、分析或修改。这种方法是最灵活的,允许进行处理,这需要访问树的完整内容。但是,它通常比流模型要慢,需要更多的内存。对象模型通过一次导航整个树来生成JSON输出。
■流模型使用一个基于事件的解析器读取JSON数据元素。解析器生成事件并停止处理。对象或数组的开始或结束,当它找到一个键,或当它找到一个值。应用程序代码可以处理或丢弃每个元素,然后,解析器继续进行下一个事件。这种方法适合于本地处理,在其中,一个元素的处理不需要其他的信息的数据。流模型生成JSON输出到给定的流一次只调用一个元素。
来源:http://www.cnblogs.com/real-psyyyy1015/p/8902002.html