新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 讨论HTML、XHTML、Web2.0、Ajax、XUL, ExtJS, jQuery, JSON、Social Networking System(SNS)、Rich Internet Applications (RIA)、Tagging System、Taxonomy(tagsonomy,folkonomy)、XForms、XFrames、XInclude, XBL (XML Binding Language)等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』 → [转帖]Ajax:拥抱JSON,让XML走开 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9660 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]Ajax:拥抱JSON,让XML走开 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客楼主
    发贴心情 [转帖]Ajax:拥抱JSON,让XML走开

    Ajax(Asynchronous JavaScript and XML)说到底就是一种浏览器异步读取服务器上XML内容的技术。现在的技术凡是跟XML扯上关系,再加上个概念做幌子,就像金装了一样,拽得不行。门外 的人看得很是热闹,门里的人摇摇头不外如是。XML呢,跨平台的新潮语言?其实XML=TXT。XML只是符合很多规范的文本。它本身什么都不是,只是保 存字符的文件。而浏览器异步读取的只是服务器上的文本内容,所以在Ajax开发时完全不必拘泥于XML。[版权所有,www.jialing.net]

      JSON的来历

      XML 的作用是格式化数据内容。如果我们不用XML还有什么更好的方法吗?这个答案是JSON。介绍JSON之前我先介绍一下JavaScript这门脚本语 言。脚本语言自身有动态执行的天赋。即我们可以把想要执行的语句放在字符串里,通过eval()这个动态执行函数来执行。字符串里的内容会像我们写的脚本 一样被执行。

      示例1:

    <HTML>
    <HEAD>
     <TITLE>eval example 1</TITLE>
    </HEAD>
    <BODY>
     <script>
      str = "alert('hello')";
      eval(str);
     </script>
    </BODY>
    </HTML>  

      打开页面会弹出hello窗口。

      我们可以在字符串中放任何脚本语句,包括声明语句:

    <HTML>
    <HEAD>
    <TITLE>eval example 2</TITLE>
    </HEAD>
    <BODY>
    <script>
     define = "{name:'Michael',email:'17bity@gmail.com'}";
     eval("data = "+define);
     alert("name:"+data.name);
     alert("email:"+data.email);
    </script>
    </BODY>
    </HTML>

      如果我们在后台异步传来的文本是JavaScript的声明语句,那么不是一条eval方法就能解析了?对于解析复杂的XML,这样的效率是多么大的提高啊!

      现在就来告诉你什么是JSON:JavaScript Object Notation。我更愿意把它翻译为JavaScript对象声明。比如要从后台载入一些通讯录的信息,如果写成XML,如下:

    <contact>
     <friend>
      <name>Michael</name>
      <email>17bity@gmail.com</email>
      <homepage>http://www.jialing.net</homepage>
     </friend>
     <friend>
      <name>John</name>
      <email>john@gmail.com</email>
      <homepage>http://www.john.com</homepage>
     </friend>
     <friend>
      <name>Peggy</name>
      <email>peggy@gmail.com</email>
      <homepage>http://www.peggy.com</homepage>
     </friend>
    </contact>

      而写成JSON呢:

    [
    {
     name:"Michael",
     email:"17bity@gmail.com",
     homepage:"http://www.jialing.net"
    },
    {
     name:"John",
     email:"john@gmail.com",
     homepage:"http://www.jobn.com"
    },
    {
     name:"Peggy",
     email:"peggy@gmail.com",
     homepage:"http://www.peggy.com"
    }
    ]


      简单的不只是表达上,最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范,JavaScrip会自动帮你解析好 的。Ajax中使用JSON的基本方法是前台载入后台声明JavaScript对象的字符串,用eval方法来将它转为实际的对象,最后通过 DHTML更新页面信息。

      JSON的格式

      JSON的基本格式如下,图片来自json.org:

      ·对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。

    按此在新窗口浏览图片
    ·数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
    按此在新窗口浏览图片
    ·值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。

    按此在新窗口浏览图片
    ·字符串的定义和C或Java基本一致。
    按此在新窗口浏览图片
    ·数字的定义也和C或Java基本一致。
    按此在新窗口浏览图片
    JSON VS XML

      ·可读性

      JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

      ·可扩展性

      XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

      ·编码难度

      XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

      ·解码难度

      XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

      ·流行度

      XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous JavaScript and JSON)了。

    转自天极


       收藏   分享  
    顶(1)
      




    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/16 9:05:00
     
     lidong7702 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:61
      门派:XML.ORG.CN
      注册:2007/4/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lidong7702发送一个短消息 把lidong7702加入好友 查看lidong7702的个人资料 搜索lidong7702在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lidong7702的博客2
    发贴心情 
    json局限于JavaScrip,考虑到xsl支持了吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/6 15:35:00
     
     jx 帅哥哟,离线,有人找我吗?
      
      
      等级:大四(GRE考了1500分!)
      文章:232
      积分:1079
      门派:XML.ORG.CN
      注册:2007/1/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jx发送一个短消息 把jx加入好友 查看jx的个人资料 搜索jx在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jx的博客3
    发贴心情 
    讲得很多,学习了,但是观点有些偏激和片面了。

    ----------------------------------------------
    岁月在人的心里留下痕迹~

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/7 16:06:00
     
     hax 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)(版主)
      文章:31
      积分:129
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hax发送一个短消息 把hax加入好友 查看hax的个人资料 搜索hax在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hax的博客4
    发贴心情 
    json有一些优势,但是也仅仅是一种格式而已。json不会取代xml,两者会长时间并行。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/28 17:14:00
     
     yf0888 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:78
      门派:XML.ORG.CN
      注册:2006/5/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yf0888发送一个短消息 把yf0888加入好友 查看yf0888的个人资料 搜索yf0888在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yf0888的博客5
    发贴心情 
    good
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/17 14:40:00
     
     hongjuesir 帅哥哟,离线,有人找我吗?魔羯座1982-1-1
      
      
      等级:大三(要不要学学XML呢?)
      文章:73
      积分:625
      门派:XML.ORG.CN
      注册:2007/6/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hongjuesir发送一个短消息 把hongjuesir加入好友 查看hongjuesir的个人资料 搜索hongjuesir在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 点击这里发送电邮给hongjuesir 访问hongjuesir的主页 引用回复这个贴子 回复这个贴子 查看hongjuesir的博客6
    发贴心情 
    json在与服务器间的函数交互还是很好的,在ajax上还是很好的。

    ----------------------------------------------
    踏实啃书

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/5 21:11:00
     
     老A 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:69
      门派:XML.ORG.CN
      注册:2007/9/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给老A发送一个短消息 把老A加入好友 查看老A的个人资料 搜索老A在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 引用回复这个贴子 回复这个贴子 查看老A的博客7
    发贴心情 
    我是新手,过来跟高手学习一下……
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/6 20:15:00
     
     cwzb 帅哥哟,离线,有人找我吗?双鱼座1981-3-10
      
      
      威望:4
      头衔:没有耳多
      等级:(版主)
      文章:253
      积分:1753
      门派:XML.ORG.CN
      注册:2004/1/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cwzb发送一个短消息 把cwzb加入好友 查看cwzb的个人资料 搜索cwzb在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 访问cwzb的主页 引用回复这个贴子 回复这个贴子 查看cwzb的博客8
    发贴心情 
    javascript 将会提供类似于 json 的XML支持.语法类似如下:

    //定义
    va user = <User><UserId>cwzb</UserId><Name>没有耳多</Name></User>;

    访问:
    user.UserId;//如此即可.

    此,即传说中的 ecmascript 4.0 新增加的内容.


    PS:
    其实JSON,在很多在编程语言中有支持...确实是一个好东西...我已经计在OPS里支持这种模式...将数据的大小再压缩一下.

    ----------------------------------------------
    无能不多智不要紧。
    关键是肯学,感兴趣!

    送给我自己的话!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/9/7 21:27:00
     
     GoogleAdSense双鱼座1981-3-10
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/13 8:58:17

    本主题贴数8,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    771.484ms