【学习笔记十一】- JSON

写在前面:

本人自学前端不久,博客的【学习笔记】既不算原创也不算转载,都是自己通过各个网站、博客、书籍、视频课程等学习的笔记。


JSON(JavaScript Object Notation——JS 对象 表示法)


JSON 是存储和交换文本信息的语法;是轻量级的文本数据交换格式;

用JS语法来描述数据对象,但JSON仍然独立于语言和平台,JSON解析器和JSON库支持许多不同编程语言;

JSON文件的类型是"xxx.json",JSON文本的MIME类型是"application/json";



JSON的语法可以表示以下三种类型的值:

1、简单值:字符串、数值、布尔值、null,JSON不支持undefined

2、对象:无序键值对

js中:

var obj={
	name:"Nick",
	age:29
};
JSON表示:

{
	"name":"Nick",
	"age":29
}
JSON对象无声明变量,JSON中没有变量的概念,没有末尾的分号,属性必须加上“”

3、数组:有序的值的列表

注:JSON不支持变量、函数、对象的实例




【解析与序列化


ECMAScript5定力了全局对象JSON,支持的浏览器有IE 8+、Firefox 3.5+、Safari 4+、Chrome、Opera 10.5+。

JSON对象有两个方法:stringify()用于把对象序列化为JSON字符串,parse()用于把JSON字符串解析为原生js值。


stringify()输出的字符串不包含任何空格字符或缩进,所有函数及原型成员都会被忽略,值为undefined的任何属性也被跳过。

三个参数stringify(js对象,过滤器(数组/函数),是否保留缩进)


过滤器为数组,要在每个级别缩进4个空格时,如:

var jsonText=JSON.stringify(obj,["name","age"],4);

数值表示每个级别缩进的空格时,最大为10,超过10自动转换为10,也可以是字符串,不超过10字符长。

过滤器为函数时如:

var jsonText=JSON.stringify(obj,function(key,value){
	switch(key){
		case "age":
			return 29;
		case "name":
			return undefined;//相应属性会被忽略
		default:
			return value;
	}
},"--");


 
 

toJSON()方法:

给对象定义toJSON()方法,返回自身JSON数据格式。

原生Date对象有一个toJSON()方法,将js的Date对象转换成ISO8601日期字符串(同Date对象调用toISOString())。

不需要解析器,JS能使用内建eval对象,用JSON数据来生产原生js对象,可使用Ajax进行传输。

JSON最常见用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON转换为JS对象然后再网页中使用该数据。

var txt='{"emploees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"}]}';
var obj=eval("("+txt+")");
document.getElementById("firstname").innerHTML=obj.emploees[1].firstName;//"George"
//把文本包围在括号中避免语法错误




猜你喜欢

转载自blog.csdn.net/jiuto_crx/article/details/78307441