一直在用JSON,发现并不了解JSON。好吧,花点时间学习下。
一、JSON的概念:什么是JSON?
全称:JavaScript Object Natation(JS对象标记法),JSON用字符串的格式表示结构化数据。并且独立于语言,可以在各语言间进行数据交换。
二、JSON的语法:JSON是如何通过字符串表示结构数据的?
2.1 JSON的类型(6种):
JSON有6中数据类型示:object, array, number,string,bool(true, false),null(之前一直以为JSON数据必须要包在花括号里,囧)。绝大部分语言都有这6种数据类型,这样JSON就可以跨语言传递了(即独立于语言)。
// 以下都是合法的JSON
"{"a": 1}" // 对象
"[1,2,3,4]" // 数组
"[1,true,null,{"a":1}]" // 数组 注意表示不能夸语言,有些语言限制数组的元素类型一致
"1" // number 1
"true" // bool true
"null" // null
"\"abc\"" // 字符串 "abc"
// 以下是否非法的JOSN字符串
"undefined"
2.2 String
JSON 字符串是Unicode编码的,用双引号表示字符串(有些语言中(如JS)单引号也能表示字符串,但是毕竟大部分语言不支持这种表示,所以JSON字符串只能是双引号表示)。
字符是大小敏感的。
"\"a\\nc\"" // "a\nc" 注意 \n是转义字符,JSON还支持其他转义字符,见参考
"\"abc\"" // "abc"
2.3 Number
JSON 数字可以整数,浮点数,科学计数法表示。
"1" // 1
"0.1" // 0.1
"-1" // -1
"1e+2" // 1* (10 * 10) -> 100 (e大小写不区分,即也可以这样表示"1E+2")
"1e-2" // 1* (0.1 * 0.1) -> 0.01
注意:
A:正数不能带”+“表示
B:只能表示10进制的数字,其他进制不能表示。
2.4 对象
对象就是键值对集合了,值可以是6中类型的任意一种。
"{"a": 1, "b": true}" // 格式就是"{name1: value1, name2:value2}"
2.5 数组
数组时值的集合,值可以是6中类型的任意一种。元素类型最好是同一类型,毕竟大多数语言不支持元素类型多种类型。
"[1,2]"
"[{\"a\":1}]"
三、日期的表示
大部分语言日期都是个对象,并且不是简单的Plain Object,导致日期在各语言中JSON表示不完全一样(JavaScript中JSON.stringify方法通过Date.toString方法把日期转成字符串),所以在有日期的数据交换时要注意。一般处理方法:将日期转成各语言都支持的日期字符串格式(如:"yyyy-MM-dd hh:mm:ss"),还可以将日期通过毫秒数值表示。
四、JSON Schema
JSON Schema是一种特殊的JSON数据,它是用来描述JSON数据的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。