JSON
最近大量接触JSON
所以我特意去JSON
标准(短短的8页,大家也可以看看)看了下,还参阅了许多资料,总结一下JSON
我们先来看一个JSON
的组成:
{
"propertyName": "propertyValue"
}
- property(属性/键值对)
- propertyName(属性名/键)
- propertyValue(属性值)
JSON可以表示四种基本类型(string(字符串)、number(数字)、booleans(布尔值)、null(空))和两个结构化类型(Object(对象)、Arrarys(数组))
书写
逗号
最后一个属性后不能有逗号
双引号
在标准中都使用了双引号。因为所有的属性必须在双引号内。但是布尔值或者数字可以不用引号。
结构层次
在设计JSON
的时候,我们都能看见可扩展和不可扩展的JSON结构。其中最主要的就2种,一种为扁平化数据,还有结构层次。
先讲讲我在知乎上看见的问题:
正常情况有一个JSON应为:
[
{
"name": "Javascript权威指南",
"chapters:": 500,
},
{
"name": "Javascript高级程序设计",
"chapters": 500,
},
{...},
{...}
]
这样看是很完美,但是有些人会这样设计?
[
{
"Javascript权威指南": 500
},
{
"Javascript高级程序设计": 500
}
]
那么我们就可以看出2种设计的问题,第二种无法扩展有木有!!而且。。他们为啥要把数据内容带入属性名!!
ok!我们知道了一点,不要把数据内容带入属性名。
接下来扁平化数据:
{
"Image": {
"width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"ThumbnailUrl": "http://www.example.com/image/481989943",
"ThumbnailHeight": 125,
"ThumbnailWidth": 100
}
}
结构层次:
{
"Image": {
"Width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"Thumbnail": {
"Url": "http://www.example.com/image/481989943",
"Height": 125,
"Width": "100"
},
}
}
JSON中本应该以数据元素扁平化方式呈现。
但是结构层次对我们开发人员更加的友好有意义。
具体情况看自己的选择。
下面讲点细的
属性名规范
- 属性名应该一看就知道啥用
- 属性名必须是驼峰,ASCII码字符串
- 首字符必须是字母,_ (下划线),$(美元符号)
- 避免使用js中的保留字
- 数组类型应该是复数,其他属性名都为单数
属性值规范
- 属性值应该为四种基本类型(string(字符串)、number(数字)、booleans(布尔值)、null(空))和两个结构化类型(Object(对象)、Arrarys(数组))
- 其他的具体可以看我下面给出的参考资料链接
方法
- JSON.parse()
- 解析一个JSON将他转换成JavaScript值或对象
- JSON.stringify()
- 把一个对象或者值转换成JSON字符串