json⼤括号转意_JSON是什么,如何处理转义?
⼤家好,我是IT修真院深圳分院第01期学员,⼀枚正直善良的web程序员。
今天给⼤家分享⼀下,修真院官⽹ JS任务中可能会使⽤到的知识点:
JSON是什么,如何处理转义?
1.背景介绍
什么是JSON
JSON (JavaScript Object Notation, JS 对象标记) 是⼀种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表⽰数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语⾔。 易于⼈阅读和编写,同时也易于机器解析和⽣成,并有效地提升⽹络传输效率。——百度百科
数据传输是我们在敲代码时,经常遇到的⼀个场景,前后端交互。给数据⼀个统⼀的格式有利于我们编写和解析数据。
json,是⼀种数据格式,在与后端的数据交互中有较为⼴泛的应⽤。
JSON的诞⽣
JSON是 (JavaScript Object Notation, JS 对象标记),它是⼀种数据交换格式。在JSON出现之前,⼤家⼀直⽤XML来传递数据。因为XML是⼀种纯⽂本格式,所以它适合在⽹络上交换数据。XML本⾝不算复杂,但是,加上DTD、XSD、XPath、XSLT等⼀⼤堆复杂的规范以后,任何正常的软件开发⼈员碰到XML都会感觉头⼤了,最后⼤家发现,即使你努⼒钻研⼏个⽉,也未必搞得清楚XML的规范。
终于,在2002年的⼀天,道格拉斯·克罗克福特(DouglasCrockford)同学为了拯救深陷⽔深⽕热同时⼜被某⼏个巨型软件企业长期愚弄的软件⼯程师,发明了JSON这种超轻量级的数据交换格式。
由于JSON⾮常简单,很快就风靡Web世界,并且成为ECMA标准。⼏乎所有编程语⾔都有解析JSON的库,⽽在JavaScript中,我们可以直接使⽤JSON,因为JavaScript内置了JSON的解析。把任何JavaScript对象变成JSON,就是把这个对象序列化成⼀个JSON格式的字符串,这样才能够通过⽹络传递给其他计算机。如果我们收到⼀个JSON格式的字符串,只需要把它反序列化成⼀个JavaScript对象,就可以在JavaScript中直接使⽤这个对象了。
转义
我们在调⽤ jsonp 接⼝或者调⽤js⽂件的时候,由于⽂件编码不同会导致出现乱码的问题。 如果你的⽂件出现了⾮英⽂字符,如果调⽤时⽂件编码不⼀致,同样会出现乱码情况。
这也就是为什么要数据统⼀格式的原因。
JSON 是适⽤于 Ajax 应⽤程序的⼀种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换 JSON是⼀种传递对象的语法
JSON是⼀个提供了stringify和parse⽅法的内置对象
stringify将js对象转化为符合json标准的字符串
parse将符合json标准的字符串转化为js对象
2.知识剖析
JSON语法
数据在名称/值对中
数据由逗号分隔
⼤括号保存对象
eval是做什么的
中括号保存数组
JSON值
数字(整数/浮点数)
字符串(双引号)
布尔值(true/false)
数组(中括号中)
对象(⼤括号中)
null
实例
JSON 数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前⾯(在双引号中),值对写在后⾯,中间⽤冒号隔开,
其中 值 可以是:数字(整数或浮点数)、字符串(在双引号中)、布尔值(true或false)、数组(在⽅括号中)、对象(在花括号中)、null
varjson= {"password":123456,"name":"myname","Booleans":true,"Array":[x,y,z],"object":{}}
或者是嵌套使⽤
转义概述
为什么需要转义?在js中我们使⽤的js对象进⾏处理,但是在与后端数据交换的时候,我们发送规定的json格式的字符串,所以在给后端发送或接受数据的时候,需要转义
{name:"myname",password:123456}
"{"name":"myname","password":123456}"
其中json字符串转js对象,调⽤parse⽅法:
js对象 = JSON.parse(json字符串);
js对象转json字符串,调⽤stringify⽅法:
json字符串 = JSON.stringify(js对象);
3.常见问题
在json字符串转换成对象,还有eval_r('('+json字符串+')')这个⽅法,但是在对⽬标数据进⾏读取时,可能会出现⼀些意外的错误:
4.解决⽅案
原因:eval_r获取的json对象的值中,如果有执⾏代码,也将照样执⾏!所以若不能保证数据的安全性,不要使⽤eval_r⽅法进⾏转义。
5.编码实战
下⾯是⼀个简单的json数据发送应⽤,有兴趣可以阅读⼀下:
6.扩展思考
我们常看到
{name:"myname",password:123456}
{"name":"myname","password":123456}
这样两种格式,即js对象和json,然⽽js对象和json有什么不⼀样的地⽅?
很多⼈搞不清楚 JSON 和 Js 对象的关系,甚⾄连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表⽰法,它使⽤⽂本表⽰⼀个 JS 对象的信息,本质是⼀个字符串。如
var obj = {a: 'Hello', b: 'World'}; //这是⼀个对象,注意键名也是可以使⽤引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是⼀个 JSON 字符串,本质是⼀个字符串
7.参考⽂献
8.更多讨论
XML是什么?
JAVASCRIPT对象的KEY可不可以直接数字,如果写数字,那么它最终是什么数据类型
详见视频:
JSON是什么,如何处理转义?_腾讯视频
感谢⼤家观看!
今天的分享就到这⾥啦,欢迎⼤家点赞、转发、留⾔、拍砖~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。