json是什么,如何处理转义?

1.背景介绍
在JSON出现之前,人们一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后 ,XML使用起来很繁琐。后来,出现了JSON。JSON是道格拉斯·克罗克福特(DouglasCrockford)在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。

2.知识剖析
JSON简介
JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。数据传输是我们在敲代码时,经常遇到的一个场景,前后端交互。给数据一个统一的格式有利于我们编写和解析数据。json,是一种数据格式,在与后端的数据交互中有较为广泛的应用。

JSON语法
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组     

JSON值
数字(整数/浮点数)
字符串
布尔值(true/false)
数组(中括号中)
对象(大括号中)
null

例                  
var json = {"password":123456,"name":"myname","Booleans":true,"Array":[x,y,z],"object":{}}
                               
JSON嵌套
                  
                    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使用
JSON.parse()将字符串转化为对象
JSON.stringify()将对象转化为字符串

                      var str = '{ "name": "cxh", "sex": "man" }';//  JSON字符串
                      var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
                        //读取
                      Alert(obj.name);
                      Alert(obj.sex);
                      var a = { "name": "cxh", "sex": "man" };//JSON对象
                      var b =JSON.stringify(a); //将JSON对象转化为JSON字符
                  
              
3.常见问题
如何处理转义

4.解决方案
在用JSON.parse解析JSON对象时会对其中的转义符进行两次解析

将字符串'{"a":"b","b":"\\\\"}'传递给JSON.parse(),首先解析器提取单引号括起来的字符串时认为第一个\转义第二个\ ,第三个\转义第四个\, 也就是说实际可输出字符串是{"a":"b","b":"\\"}(可通过console.log('{"a":"b","b":"\\\\"}')验证),之后正式转为js对象的时候还有一次转义, 也就是实际输出字符转中的第一个\转义第二个\(此时只有两个\)。 所以console.log(JSON.parse('{"a":"b","b":"\\\\"}') );输出结果为Object {a: "b", b: "\"}, 也就是说实际显示的数据为一个\(实际可输出一个\说明在此之前还有一个\)。

总结:JSON.parse的参数包含转移字符的时候会遇到两次转义的问题,其实第一次是字符串本身的转义,第二次是真正转为js对象的转义。

5.编码实战

6.扩展思考

7.参考文献
JSON对象 -- JavaScript 标准参考教程(alpha)
JSON.stringify 语法实例讲解
JSON.parse() - JavaScript

8.更多讨论


问题一  介绍一下XML

答:

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准

问题二  JSON的应用场景是什么?

答:前后端数据传输,页面之间数据传输。

问题三  json和jsonp的区别是什么?

答:

json是一种基于文本的数据交换格式,jsonp是一个跨域交互协议。

json返回的是一串数据;而jsonp返回的是脚本代码。

详情:https://blog.csdn.net/Steven_2669/article/details/77119752

详情:http://www.cnblogs.com/iovec/p/5312464.html


PPT

video


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值