在学习的过程中我们会发现,json数据或者json格式的配置文件我们是经常遇到的。因此我就特意查找了有关json的资料,发现网上对于json的书籍或者讲解的资料好像与其用处有些不匹配了。
因此在较为深入了解之后,就想写这一篇学习笔记来记录一下。
数据交换格式是一种在不同平台间传递数据的文本格式。而json就是一种数据交换的格式。或者我们还听说过XML这种数据交换格式。数据交换格式很重要,我们需要它们来实现不同系统之间的数据交换。
JSON的全程是 JavaScript object natation(JavaScript 对象表示法)。虽然JSON源于JavaScript的一个子集,但是我们没必要先去了解JavaScript。因为数据交换格式是独立于语言的。
JSON是基于JavaScript对象字面量。 JavaScript对象表示法,在去掉JavaScript之后,我们使用的是一种基于对象表示法的数据交换格式。“对象”在我们编程应该是非常熟悉了的。表示法指的是一个可以表示诸如数字或单词等数据的字符系统。
JSON是以对象来对数据进行封装的。该数据对象用一个花括号包起来,其中是若干键值对,
如下就是一个正确的JSON格式。
{"name":"lihua","age":2
}
.json
扩展名使用字符串的时候还要注意转义字符的使用,如下表是一些常用的转义字符
正确格式 | 作用 |
---|---|
\/ | 正斜线 |
\b | 退格符 |
\f | 换页符 |
\t | 制表符 |
\n | 换行符 |
\r | 回车符 |
\u | 后面跟十六进制字符 |
\" | 双引号 |
\\ | 反斜线 |
JSON中的值可以为数组类型,一般我们是规定数组中的类型是要一致的。(为了方便,如果不一致,语法是合规的)。同时JSON的值也可以是对象,也就是可以嵌套对象。如下
{"person":{"name": "Lindsay","head":{"hair":{"color":"light blond","length":"short"}},"eyes":"green"}
}
JSON Schema 是为了验证数据一致性的问题。一般会在发送的时候回答下面的三个问题
- 值得数据类型是否正确?可以具体规定一个值是数字、字符串等类型
- 是否包含所需要的数据?可以具体规定哪些数据是需要的,哪些是不需要的
= 值得形式是不是我需要的?可以指定范围、最小值和最大值
"$schema"
,值必须为所用草拟版本的链接{"$schema":"http://json-schema.org/draft-04/schema#"
}
"properties"
和"required"
.如下面这个例子,就定义了猫的属性类型、必填字段和属性的限制{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"cat",
"properties":{"name":{"type":"string","minLength":3,"maxLength":20},"age":{"type":"number","minimum":0}},"requied":{"name","age"}
}
或者我们或多或少都接触过通过某种方式取访问公开的API来获得返回的数据。这里就稍微介绍一下返回格式为JSON的一些情况。