【05】笔记

        尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。 

JSON建构于两种结构:

 “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
 
 

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

比如,后台载入一些用户的基本信息,如果写成XML,如下:
  1. <content>
  2. <user>
  3. <username>andy</username>
  4. <age>20</age>
  5. <info>
  6. <tel>123456</tel>
  7. <cellphone>98765</tel>
  8. </info>
  9. <address>
  10. <city>Beijing</city>
  11. <postcode>222333</postcode>
  12. </address><address>
  13. <city>newyork</city>
  14. <postcode>555666</postcode>
  15. </address>
  16. </user>
  17. </content>
 
 
而写成JSON呢: 

  1. function showJSON(){
  2. var user ={
  3. "username":"andy",
  4. "age":20,
  5. "info":{
  6. "tel":"123456",
  7. "cellphone":"98765"
  8. },
  9. "address":[{
  10. "city":"beijing",
  11. "postcode":"222333"
  12. },{
  13. "city":"newyork",
  14. "postcode":"555666"
  15. }]
  16. }
  17. alert(user.username);
  18. alert(user.age);
  19. alert(user.info.cellphone);
  20. alert(user.address[0].city);
  21. alert(user.address[0].postcode);
  22. }
简单的不只是表达上,最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范,JavaScrip会自动帮你解析好 的。
上面的JSON表示一个user对象,拥有username, age, info, address 等属性
同样也可以用JSON来简单的修改数据,修改上面的例子
  1. user.username ="Tom"; 

json官网 http://www.json.org/

JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

  1. function showCar(){
  2. var carr =newCar("Dodge","Coronet R/T",1968,"yellow");
  3. alert(carr.toJSONString());
  4. }
  5. functionCar(make, model, year, color){
  6. this.make = make;
  7. this.model = model;
  8. this.year = year;
  9. this.color = color;
  10. }
 
 
可以使用eval来转换字符到JSON Object 
  1. function myEval(){
  2. var str ='{ "name": "Violet", "occupation": "character" }';
  3. var obj =eval('('+ str +')');
  4. alert(obj.toJSONString());
  5. }
 
或者使用parseJSON()方法 
  1. function myEval(){
  2. var str ='{ "name": "Violet", "occupation": "character" }';
  3. var obj = str.parseJSON();
  4. alert(obj.toJSONString());
  5. }
 
 

JSON 与XML对比

 可读性 JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。
 可扩展性 XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
 编码难度 XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
 解码难度 XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。
 流行度 XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous JavaScript and JSON)了。 

**

转载于:https://www.cnblogs.com/moyuling/p/9672ac10151bbbaaf725aa814f7a2f33.html

【05】JSON笔记相关推荐

  1. 伯禹公益AI《动手学深度学习PyTorch版》Task 05 学习笔记

    伯禹公益AI<动手学深度学习PyTorch版>Task 05 学习笔记 Task 05:卷积神经网络基础:LeNet:卷积神经网络进阶 微信昵称:WarmIce 昨天打了一天的<大革 ...

  2. javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象...

    对象字面量  JSON var obj = { aaa :999}; var json={"aaa":999,"bbb":888}; "kay&quo ...

  3. 《JSON笔记之三》---postman中传入json串

    1.关于如何使用postman工具,简单的介绍一下, 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等 ...

  4. 《JSON笔记之二》----封装JSONUtil

    许多java开发人员对于fastjson再也熟悉不过了,这是alibaba开源的依赖,使用fastjson可以使我们很容易的把请求json串转换成为我们所需要的对象.list.map等对象格式,对于开 ...

  5. viper4android io错误,Go viper包处理JSON笔记

    第一部分 前景提要 一.背景 用Go搭一个小项目, 按传统的套路把开发环境和生产环境配置信息写在配置文件config.json中, 初始化加载配置,解析出数据.看着是解析一个JSON的小事,过程中却发 ...

  6. 自学前端第25天-JSON笔记

    JSON 1.JSON介绍 2.JSON分类 3.JSON中允许的值 4.将js转化为JSON 5.将JSON转化为js 6.兼容性问题 1.JSON介绍 JSON全名Javascri Object ...

  7. html渲染json的插件,[ json editor] 如何在网页中使用Json editor 插件

    [目的] 在自己的网页上交由用户进行json的可视化编辑 [难点]1.json中含有递归嵌套的数组和对象 2.json中的基本值类型有数字.字符串和布尔型 [方法]使用daviddurman的Flex ...

  8. xml 以及JSON学习记录

    XML 与 JSON 笔记 一.xml 部分 二. json部分 一.xml 部分 1.xml  简介 XML是Extensible Markup Language的缩写,即可扩展标记语言.它是一种具 ...

  9. Android高级终端开发学习笔记(《疯狂Android讲义》第2章-第10章)

    Android疯狂讲义前10章知识点总结 /-------------------------10-31号晚上学习笔记----------------------------/ 在设置了最小支持版本为 ...

  10. VNote 笔记软件 相关文件 及 使用技巧(更新中)

    文章目录 VNote 简介 VNote 2.10 公共目录配置 ~\AppData\Roaming\vnote session.ini [global] [notebooks] [geometry] ...

最新文章

  1. 可以卸载什么程序来对计算机进行瘦身,电脑越来越卡了,教你一分钟让电脑瘦身(C盘哪些文件可以删除)-怎么清理电脑内存...
  2. 水平越权访问与垂直越权访问漏洞
  3. Microsoft office 2007 word PPT 转pdf的插件(转)
  4. 蓝盾第三代AI防火墙分析
  5. notepad++默认的快捷键整理
  6. Java 并发实践 — ConcurrentHashMap 与 CAS
  7. 微软MS10-046漏洞的利用
  8. 前端学习(3227):回调形式的ref的调用次数
  9. linux运行tcl脚本语言,Tool Command Language (Tcl)初体验
  10. 滚动模式_违停车辆有可能被强制拖车!嘉兴交警开启滚动式兵团化作战模式
  11. java opencv 读取视频_java使用OpenCV从视频文件中获取帧
  12. 【Unity开源项目精选】Entitas:Unity DOTS的先行者
  13. 携程专车入局:牌照在手,说走就走
  14. 人手一份的Java面试精选题,你值得拥有!
  15. PHP 生成带logo二维码并修改背景颜色,利用画布布局二维样式
  16. signature=e7b038f264f5a1cf5b8e81732b377b41,不同养生功法对2型糖尿病伴失眠患者抑郁,焦虑和睡眠质量的影响...
  17. 仿知乎日报图文小程序模板
  18. day02 快速上手
  19. 计算机网络:数据链路层:有线和无线网络
  20. 目标跟踪论文(一):SiamFC孪生网络

热门文章

  1. 施乐7556_富士施乐Fuji Xerox WorkCentre 7556 驱动
  2. Weex组件库-Dialog
  3. glEnable(GL_DEPTH_TEST)作用
  4. Centos-Nginx-Docker 入门(一)
  5. ORACLE数据泵还原(IMPDP命令)【转】
  6. 【剑指offer】:Q44:直扑克
  7. 知名应用背后的第三方开源项目
  8. perl删除Windows下的图片缓存缩略图(Thumbs.db)
  9. MySQL日志(一条sql更新语句是如何执行的)
  10. Java ConcurrentHashMap