大家好,我是IT修真院武汉分院web第17期的学员吴三水,一枚正直纯洁善良的web程序员。
今天给大家分享一下,修真院官网js(职业)任务四,深度思考中的知识点——json是什么,如何处理转义?
最早的程序猿们使用XML来进行传递数据。虽然XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后 ,XML使用起来很繁琐了。2001年由 Douglas Crockford 提出JSON 格式后,JSON便慢慢取代了繁琐笨重的 XML 格式。
JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。相比 XML 格式,JSON 格式有两个显著的优点:书写简单,一目了然;符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。所以,JSON 迅速被接受,已经成为各大网站交换数据的标准格式,并被写入标准。
PS:每个 JSON 对象就是一个值,可能是一个数组或对象,也可能是一个原始类型的值。总之,只能是一个值,不能是两个或更多的值。
ps:注意,null、空数组和空对象都是合法的 JSON 值。
数据在名称/值对,中
数据由逗号分隔
大括号保存对象
中括号保存数组
例:
var json = {
"password":123456,
"name":"myname",
"Booleans":true,
"Array":[x,y,z],
"object":{}
}
myObj = {
"name":"jnshu",
"alexa":1000,
"sites": {
"site1":"www.jnshu.com",
"site2":"m.jnshu.com",
"site3":"c.jnshu.com"
}
}
console.log(myObj)
//输出结果:
// Object {name: "jnshu", alexa: 1000, sites: Object}
JSON对象是 JavaScript 的原生对象,用来处理 JSON 格式数据。
通俗点讲,每个符合JSON格式的值就是一个JSON对象。也就是说,每个JSON对象,都是一个值。一个JSON对象对应且只对应一个值,要么是简单类型的值,要么是复合类型的值。
它有两个方法:JSON.stringify()和JSON.parse()。
JSON.stringify(value [, replacer] [, space])
value:是必须要的字段。就是你输入的值,比如数组啊,对象啊等等。
replacer:这个是可选的。它又分为2种方式,一种是方法,第二种是数组。
当replacer是方法时,其作用类似给传入的对象的每一个符合方法条件的值一个方法进行迭代
第三个参数是对显示数据进行排版,对每一个键值对换行处理。值可以是数字或字符串。当起为数字时,一个数字代表键值对前面的空格,数字不大于10。字符串同理,只是将空格换成相应的字符,字符最多不能大于10个。
在js中我们使用的js对象进行处理,但是在与后端数据交换的时候,我们需要发送规定的json格式的字符串,所以在给后端发送或接受数据的时候,需要转义
json字符串转js对象,调用parse方法:
js对象 = JSON.parse(json字符串);
js对象转json字符串,调用stringify方法:
json字符串 = JSON.stringify(js对象);
原因:在用JSON.parse解析JSON对象时会对其中的转义符进行两次解析。
比如'{"a":"b","b":"\\\\"}' //{a: "b", b: "\"}
,
首先解析器提取单引号括起来的字符串时认为第一个‘\’是用来转义第二个‘\’的 ,第三个‘\是用来’转义第四个‘\’, 结果输出字符串是{“a”:“b”,“b”:"\"}。
然后正式转为js对象的时候还有一次转义, 也就是实际输出字符转中的第一个\转义第二个\(此时只有两个\),结果输出字符串是{“a”:“b”,“b”:""}。
所以说我们想要输出"“时需要输入四个”",不然会出错。
我们先看2串代码
{name:“myname”,password:123456}
它是js对象
和
{“name”:“myname”,“password”:123456}
它是json
那么js对象和json有什么不一样的地方?
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
例:
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
它们的区别
JSON对象
JSON语法
JSON转义的问题
感谢大家观看!
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~