大家好,我是IT修真院北京总院第21期的学员杨梦桐,
今天这篇文主要关于json是什么,以及如何处理转义。
数据传输是我们在编写代码时经常遇到的一个场景。给数据一个统一的格式有利于我们编写和解析数据。json,是数据格式的一种,在与后端的数据交换中有较为广泛的应用。
json是一种数据格式,全名JavaScript Object Notation (JavaScript 对象表示法),具有基于文本、轻量级、被广泛地用于数据交换的特点,也是一种传递对象的语法,对象可以是name/value对,数组和其他对象,具体展开,包含如下概念:
1. 基于文本:JSON是基于文本的数据格式,相对于基于二进制的数据,所以JSON在传递的时候是传递符合JSON这种格式的字符串,而不是一个对象。
2. 轻量级:在JSON之前,有一个数据格式叫xml,现在依旧广泛使用,但是JSON更加轻量,这在有大量数据请求和传递的情况下是有明显优势的。
3. 应用广泛:轻量已经是一个用于数据交换的优势了,但更重要的JSON是易于阅读、编写和机器解析的,即这个JSON对人和机器都是友好的,而且又轻,独立于语言(因为是基于文本的),所以JSON被广泛用于数据交换。
json的常见问题如下
1.什么是JSON对象?
a.符合json格式的js对象被简称为json对象
b.JSON是一个提供了stringify和parse方法的内置对象
c.JSON.stringify()将js对象转化为符合json标准的字符串
d.JSON.parse()将符合json标准的字符串转化为js对象
2. json格式的对象与一般js对象语法上的区别
a.json格式的对象键名必须是加双引号,属性值只能是数值(10进制)、字符串(双引号)、布尔值和null,也可以是数组或者符合JSON要求的对象,不能是函数、NaN, Infinity(存放表示正无穷大的数值), -Infinity和undefined,最后一个属性后面不能有逗号,前导0不能用,小数点后必须有数字
b.js对象键名可允许不加、加单引号、加双引号,任意属性值均可,最后一个属性后面可以有逗号,数值无限制
3. 什么是json格式?
数据以键值对的形式存储,和对象的格式有点像
ar person={name:"blabla"};
//一个普通的js对象
var obj2 = {"width":100,"height":200,"name":"blabla"};
// 可把这个称做:JSON 格式的 JavaScript 对象
var str1 = '{"width":100,"height":200,"name":"blabla"}';
// 可把这个称做:JSON 格式的字符串
var arr = [
{"width":100,"height":200,"name":"blabla"},
{"width":100,"height":200,"name":"blabla"},
{"width":100,"height":200,"name":"blabla"},
];
// 这个可叫JSON格式的数组,是JSON的稍复杂一点的形式
var str2='['+
'{"width":100,"height":200,"name":"blabla"},'+
'{"width":100,"height":200,"name":"blabla"},'+
'{"width":100,"height":200,"name":"blabla"},'+
']';
// 这个可叫稍复杂一点的 JSON 格式的字符串
扩展思考:由json字串生成json对象时的转义问题:http://blog.csdn.net/robotech_er/article/details/40260377
参考文献:http://www.jb51.net/article/29893.htm
json和xml作为数据传输的格式分别有什么优缺点:http://blog.csdn.net/tangtiantian520/article/details/50945582
ppt链接:https://ptteng.github.io/PPT/PPT/js8router.html#/
视频链接:https://v.qq.com/x/page/s0527lcnvtf.html
拓展问题:
1. json和jsonp的区别
json返回的是一串数据;而jsonp返回的是脚本代码(包含一个函数调用),具体可参考http://www.cnblogs.com/iovec/p/5312464.html这篇文章
2. xml是什么
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。具体可参考https://baike.baidu.com/item/可扩展标记语言/2885849?fr=aladdin&fromid=86251&fromtitle=xml
3. xml和json的区别
相较json,XML文件庞大,文件格式复杂,传输占带宽;服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;服务器端和客户端解析XML花费较多的资源和时间。可参考http://www.cnblogs.com/SanMaoSpace/p/3139186.html