JSON

JSON

JSON是一种数据交换格式

数据交换格式是一种在不同平台间传递数据的文本格式

JSON 的全称是 JavaScript Object Notation(JavaScript字面量表示法)

JSON的媒体类型是application/json

字面量就是变量字面上的意思,没有任何的隐喻 例如 y=x+5 5就是字面量 而y则不是

在json中实用:来分隔名称和值,名称始终在左侧,值始终在右侧,字符和字符串组成的名称和值都必须被”“包含(单引号同样非法),否则将会创建一个JavaScript对象,数字

在json中,任何名称都是合法的,包括在双引号中插入单引号,但并不提倡这么做,因为这样会降低json数据的可移植性,除(a~z,0-9)皆为特殊字符

JSON对象可以嵌套

{
 "yo":{
	"bala":"ss"
	"栓但":{
		"铁柱":"树生"
		}
	}
}

JSON : number

整数,浮点数,负数,指数都被允许

JSON : boolean

true,false

JSON : null

null表示一个没有值的值,undefined则不同(null必须采用小写形式)

JSON : array

数组可以由数字,字符串,布尔值,null,对象构成(在大多数语言里,null不应该存在于数组中)

JSON Schema

指的是数据交换中的一种虚拟的“合同”。

更像是用schema提供的语法规定json内容的具体规范,而服务器负责检查,所定义的json数据是否符合预先设定好的格式

JSON验证器负责验证语法错误,JSON Schema负责提供一致性检验。

JSON Schema是数据接收方额第一道防线,也是数据发送方节约时间、保证数据正确的好工具。

JSON Schema可以解决下列有关一致性验证的问题。

1、 值的数据类型是否正确:可以具体规定一个值是数字、字符串等类型;

2、 是否包含所需的数据:可以规定哪些数据是需要的,哪些是不需要的;

3、 值的形式是不是我需要的:可以指定范围、最小值和最大值。

第一个值是声明,声明的名称必须为”$schema” 值为所用草拟版本的链接

第二个值是json schema的标题

第三个值定义需要包含在JSON中的属性

required规定了哪些值是必须存在的,哪些值是可选的

{
	"$schema":"http://json-schema.org/draft-04/schema#",
	"title":"yooooo",
	"properties":{
	"name":{
		"type":"string"
		},
	"age":{
		"type":"number",
		"description":"your age in years"
		},
	"declawed":{
		"type":"boolean"
		}
	},
	"required":[
	"name",
	"age"
	]
} 还可以规定一些范围属性,例如minLength,maxLength,(规定字符最小最大长度)minimum(规定数字最小值)

JavaScript中的XMLHttpRequest与Web API

JavaScript中的xhr负责在客户端发起请求,web api负责在服务端返回响应

将一个对象转成JSON文本称为序列化(json.stringify)

将JSON文本转换成对象称为反序列化(json.parse)

AJAX

JavaScript在幕后进行的操作,称为异步操作,不会中断主进程的进行, 也称为AJAX

Asynchronous JavaScript and XML(异步JavaScript和XML) 节省用户操作,时间,提高用户体验,减少数据请求 传输获取数据

原生js ajax请求

  1. var xhr = new XMLHttpRequest;
  2. xhr.open(‘get’&’post’,’地址’,’true’&’flase’)
    1. true 异步 非阻塞模式 一般填true
    2. false 同步 阻塞模式
    3. get方式用来传递非敏感数据,将表单数据以名称/值对的形式附加到URL中,用&连接名称数值,名称数值间用=连接.当传递中文时,用encodeURL(‘数据’)进行编码传输,get方式会优先读取缓存的地址,所以可以在数据后用&连接一个时间戳解决,new Date().getTime()
    4. post方式将表单数据附加到 HTTP 请求的 body 内 ,如果需要用post方式,需要设置请求头,post没有缓存问题,而且中文不需要编码处理,因为请求头中已经设置了编码方式
    xhr.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded;);
  3. xhr.send()
    1. 若发送方式为get,此处置空
    2. 若发送方式为post,则在send中添加数据
  4. 判断状态,处理数据

    xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
    console.log(xhr.responseText);
    }
    }
    	
    readyState只有5个值,只读
    	
    0:XMLHttpRequest对象创建完成。
    	
    1:XMLHttpRequest对象初始化完成。
    	
    2:请求已经发送。
    	
    3:服务器已经返回了数据(但是还没有被解析,可能只一段http报文)。
    	
    4:数据解析已经完成
    	
    xhr.reponseText 返回的永远是一个字符串类型的值