前言
在学习的过程中我们会发现,json数据或者json格式的配置文件我们是经常遇到的。因此我就特意查找了有关json的资料,发现网上对于json的书籍或者讲解的资料好像与其用处有些不匹配了。
因此在较为深入了解之后,就想写这一篇学习笔记来记录一下。
json 是什么
数据交换格式是一种在不同平台间传递数据的文本格式。而json就是一种数据交换的格式。或者我们还听说过XML这种数据交换格式。数据交换格式很重要,我们需要它们来实现不同系统之间的数据交换。
JSON的全程是 JavaScript object natation(JavaScript 对象表示法)。虽然JSON源于JavaScript的一个子集,但是我们没必要先去了解JavaScript。因为数据交换格式是独立于语言的。
JSON是基于JavaScript对象字面量。 JavaScript对象表示法,在去掉JavaScript之后,我们使用的是一种基于对象表示法的数据交换格式。“对象”在我们编程应该是非常熟悉了的。表示法指的是一个可以表示诸如数字或单词等数据的字符系统。
JSON的语法
JSON是以对象来对数据进行封装的。该数据对象用一个花括号包起来,其中是若干键值对,
如下就是一个正确的JSON格式。
{
"name":"lihua",
"age":2
}
- 键必须是一个用双引号包括的字符串,而值则是JSON中任意的数据类型。
- 字符串必须使用双引号来进行标注。
- 在JSON中,多个键值对使用逗号来分隔。
- JSON文件使用
.json扩展名
使用字符串的时候还要注意转义字符的使用,如下表是一些常用的转义字符
| 正确格式 | 作用 |
|---|---|
| \/ | 正斜线 |
| \b | 退格符 |
| \f | 换页符 |
| \t | 制表符 |
| \n | 换行符 |
| \r | 回车符 |
| \u | 后面跟十六进制字符 |
| \" | 双引号 |
| \\ | 反斜线 |
JSON中的值可以为数组类型,一般我们是规定数组中的类型是要一致的。(为了方便,如果不一致,语法是合规的)。同时JSON的值也可以是对象,也就是可以嵌套对象。如下
{
"person":{
"name": "Lindsay",
"head":{
"hair":{
"color":"light blond",
"length":"short"
}
},
"eyes":"green"
}
}
JSON Schema
JSON Schema 是为了验证数据一致性的问题。一般会在发送的时候回答下面的三个问题
- 值得数据类型是否正确?可以具体规定一个值是数字、字符串等类型
- 是否包含所需要的数据?可以具体规定哪些数据是需要的,哪些是不需要的
= 值得形式是不是我需要的?可以指定范围、最小值和最大值
- JSON Schema 使用JSON来书写。首先需要再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"
}
}
请求数据对象与Web API
或者我们或多或少都接触过通过某种方式取访问公开的API来获得返回的数据。这里就稍微介绍一下返回格式为JSON的一些情况。
- Web API:通过HTTP与服务进行交互的一系列指令与标准。
- 序列化:将对象转化为文本的操作。这一般是用于我们将数据发送数据的情况。
- 反序列化:将序列化的文本转化为对象的操作。常用语我们接受返回的数据是文本格式,我们需要先转换为对象,才方便对数据进行提取和操作。
- JAAX,指的是JavaScript中的异步(后台)操作。当幕后请求的是JSON数据时候,这种技术可以称为AJAJ
- 对于网络上的API 有些是公开的,有些则是涉及到限制访问的域名。如一个银行提供的API,可以只允许其指定的几个域名能够进行访问。

1029

被折叠的 条评论
为什么被折叠?



