Java Script Object Notation (JSON)是一种轻量级的数据交换格式。
它是基于JavaScript编程的一个子集。
JSON(ECMA-262 3rd)是建立在两个结构上的:
"firstname": "James"}
{"city": "Sydney", "street":"Victoria", "bldg":25}
{"number": 25, "isOdd":true, "nothing":null}
Value可以是字符串或数字,也可以是true或false或null,也可以是对象或数组:
{"single quote": "\'", "back slash":"\\",
"forward slash":"\/", "line feed":"\u000A" }
{"fraction":0.25, "true":true,"false":false,
"nothing": null}
{"full name": {"first name":"James",
"initials":null,
"last name":"Bond"},
"number":"007"}
{"colours":["red", "green", "blue"]}
{"numbers":[10, 20, 30, 40, 50]}
数组值的序列:
{"2dim array":[ [11,12,13,14],
[21,22,23,24],
[31,32,33,34] ]}
{"array of objects": [ {"name":"James Bond"},
{"name":"Harry Potter"},
{"name":"Robin Hood"} ] }
{"array of truth":[true, false, true, true]}
{"array of nothing":[null, null, null, null, null]}
{"empty array":[ ]}
{"array of varieties":[1, "one", true, ["a", "b", "c"]]}
Binary JSON(BSON)是一种计算机数据交换格式,主要用于MongoDB数据库系统中的数据存储和网络传输格式。
BSON是一种类似json的二进制编码序列化文档(对象)。
BSON包含了JSON中没有的扩展,它允许对数据类型进行表示。
例如BSON有一个 Date类型和一个BinData类型。
常见的数据类型包括: null, boolean, number, string, array, embedded document(object)。
新的数据类型包括: date, regular expression, object id, binary data, code。
举例:
{"nothing":null}
{"truth":false}
{"pi":3.14}
{"int":NumberInt("345")}
{"long":NumberLong("1234567890987654321")}
{"greeting":"Hello !"}
{"pattern":/(Hi|Hello)!/}
{"date":new Date("2016-10-17")}
{"array of varieties":[1, "one", true, ["a", "b", "c"]]}
{"_id":ObjectId()}
{"code":function(){ /* ... */ }}
{"Double":124.56}
{"timestamp":Timestamp(1234567,0)}
{"timestamp":Timestamp()}
{"maxkey":{"$maxKey": 1} }
{"minkey":{"$minKey" : 1} }
BSON中的每个文档(对象)都必须有一个"_id"键!
“_id”键的值可以是任意类型,“_id”键的默认值是ObjectId()。
在文档(对象)的集合中,每个文档(对象)必须有一个唯一的"_id"值。
如果一个文档没有“_id”键,那么当它被插入到集合中时“_id”键将会被自动添加到文档中。
{"_id":ObjectId()}
{"_id":ObjectId("507f191e810c19729de860ea") }