JSON基于JavaScript语言,是一种轻量级的数据交换格式,是Standard ECMA-262 3rd Edition- December 1999的一个子集,也即 JavaScript语法的一个子集。它是一种类似于C语言结构体的名称、值对表示方法,支持内娥的文档对象和数组对象。数据内容以可嵌套的KV文本形式存储,数据的结构和内容一目了然。 JSON 采用的是完全独立于编程语言的文本格式来存储和表示数据。
JSON格式数据中值的类型支持字符串、数值、布尔及空值四种基本类型,Object及数组两种复杂类型。字符串需要用引号括起来,如示例中图书的名称,也支持转义字符内容。布尔类型只有true 和false两个值。空值采用null表示。数组使用[ ]包含所有元素,每个元素之间用逗号分隔,可以使用从0开始的索引号访问其中的元素:元素可以是任意的值,如[ " abe",123,true, null ],这点与C语言传统意义上的数组有很大不同。Object 使用{ }包含一系列无序的Key-Value键值对表示,其中Key和Value之间用冒号分隔,每个Key-Value之间用逗号分隔。访问其中的数据时,通过obj. key的形式来获取对应的Value。Object 或数组中的值还可以是另一个Object 或者数组,以表示更复杂的数据。一个用于存储学生信息的对 象数组表示如下。
Student:[{"Name":"a","Province":"b"},
{"Name":"d","Province":"f"}]
JSON格式数据突出的优点就是比较简单,易于读写,层次结构清晰,格式都是压缩的,占用带宽小,并且易于程序解析,可以方便地通过JS编程解析处理JSON数据。
JSON基于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的编程语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被实现为数组(array),矢量(vector),列表(list),序列(sequence)。
这些都是常见的数据结构。目前,绝大部分编程语言都以某种形式支持它们。这使得在各种编程语言之间交换同样格式的数据成为可能。
对象(object) 是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。数组(array) 是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value) 可以是双引号括起来的字符串(string)、数值(number)、
true
、false
、null
、对象(object)或者数组(array)。这些结构可以嵌套。等等不一一列举在上述链接中都有(...........)
JSON: JavaScript Object Notation(JavaScript 对象标记法)。
JSON 是一种存储和交换数据的语法。
JSON 是通过 JavaScript 对象标记法书写的文本。
当数据在浏览器与服务器之间进行交换时,这些数据只能是文本。
JSON 属于文本,并且我们能够把任何 JavaScript 对象转换为 JSON,然后将 JSON 发送到服务器。
我们也能把从服务器接收到的任何 JSON 转换为 JavaScript 对象。
以这样的方式,我们能够把数据作为 JavaScript 对象来处理,无需复杂的解析和转译。
这个名字也是缘于JSON(Binary Serialized Document Format),含义为二进制的JSON。BSON由10gen开发,主要被作用MongoDB数据库中的数据存储和网络传输格式。BSON在数据访问的性能上有很大的提升。JSON遍历时需要对文档进行扫描读取数据,进行括号等数据结构的匹配。而BSON将每一个元素的长度存在元素的头部信息中,这样基于读取到的元素长度经过计算就能直接定位到指定的内容上进行读取,数据访问效率更高。另外相比JSON的数据类型BSON更加丰富,大大减少了计算开销和数据大小,操作也更加简单。当然,有的时候,相对JSON来说,BSON会占用更多的空间,比如:“{“field”:7}”,JSON存储7只用了一个字节,而BSON如果采用32位整型,则需要四个字节。
BSON 与 JSON :
1.BSON包含了JSON没有的数据类型,比如Date和BinData。
2.BSON需要的存储空间比JSON少,存储效率也比JSON高。(轻量)
3.JSON存储是像字符串一样,而BSON是按结构存储的(像数组 或者struct)
4.JSON修改要大动大移,需要扫字符串,而BSON就不需要,可以直接定位。(可遍历)
5. BSON的编码与解码速度很快。(高效)
6.某些情况,BSON会牺牲额外的空间让数据的传输更加方便。比如,字符串的传输的前缀会标识字符串的长度,而不是在字符串的末尾打上结束的标记。这样的传输形式有利于MongoDB修改传输的数据。