在线情况
楼主
  • 头像
  • 小咪的爸爸
  • 级别
  • 徽章
  • 职务总版主
  • 声望+29
  • 积分39723
  • 经验1151179
  • 文章33857
  • 注册2003-08-14
转:Ajax中XML和JSON格式的优劣比较
[I]作者:heiyeluren
时间:2006-04-20
博客:[/I][URL=http://blog.csdn.net/heiyeshuwu][I][COLOR=#800080]http://blog.csdn.net/heiyeshuwu[/COLOR][/I][/URL]

刚做完一个小的使用Ajax的项目。整个小项目使用JavaScript做客户端,使用PHP做服务器端、利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式。做完后基本做一个简单总结,简单分析一下使用XML作为传输格式的优劣。

[B][  XML ][/B]
使用XML作为传输格式的优势:
1. 格式统一, 符合标准
2. 容易与其他系统进行远程交互, 数据共享比较方便

缺点:
1. XML文件格式文件庞大, 格式复杂, 传输占用带宽
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码
4. 服务器端和客户端解析XML花费资源和时间


[B][ JSON ][/B]
那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:
1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小
2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取
3. 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.
   另外PHP的PEAR类已经提出了支持 ([URL=http://pear.php.net/pepr/pepr-proposal-show.php?id=198][COLOR=#0000ff]http://pear.php.net/pepr/pepr-proposal-show.php?id=198[/COLOR][/URL])
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护

缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性
2. JSON格式目前在Web Service中推广还属于初级阶段

PS: 据说Google的Ajax是使用 JSON+模板 做的


[B][  JSON相关链接 ][/B]
官方网站: [URL=http://www.json.org/][COLOR=#0000ff]http://www.json.org/[/COLOR][/URL]
官方网站中译: [URL=http://blog.patterns.cn/json/][COLOR=#0000ff]http://blog.patterns.cn/json/[/COLOR][/URL]
PEAR::HTML_AJAX: [URL=http://pear.php.net/package/HTML_AJAX][COLOR=#0000ff]http://pear.php.net/package/HTML_AJAX[/COLOR][/URL] (相当成熟的Ajax框架, 使用JSON进行数据传输, 包含丰富的客户端和服务器端)
Services_JSON: [URL=http://pear.php.net/pepr/pepr-proposal-show.php?id=198][COLOR=#0000ff]http://pear.php.net/pepr/pepr-proposal-show.php?id=198[/COLOR][/URL]
PHP JSON扩展: [URL=http://www.aurore.net/projects/php-json/][COLOR=#0000ff]http://www.aurore.net/projects/php-json/[/COLOR][/URL]
PHP和JavaScript使用JSON交换数据: [URL=http://www.flyinghail.net/archives/10][COLOR=#0000ff]http://www.flyinghail.net/archives/10[/COLOR][/URL]
Ajax Using JSON: [URL=http://www.x2blog.cn/lulei/3851.html][COLOR=#0000ff]http://www.x2blog.cn/lulei/3851.html[/COLOR][/URL]
XML跟JSON相应比较文章: [URL=http://blog.hexun.com/dulao5/912477_d.html][COLOR=#0000ff]http://blog.hexun.com/dulao5/912477_d.html[/COLOR][/URL]
让Service_JSON支持中文: [URL=http://blog.sina.com.cn/u/55acd28f01000113][COLOR=#0000ff]http://blog.sina.com.cn/u/55acd28f01000113[/COLOR][/URL]


[B][  目前成熟的客户端框架 ][/B]
Xajax: [URL=http://xajax.sourceforge.net/][COLOR=#0000ff]http://xajax.sourceforge.net[/COLOR][/URL] (目前在国内使用比较广泛,跟Smarty模板结合良好)
Sajax: [URL=http://www.modernmethod.com/sajax/][COLOR=#0000ff]http://www.modernmethod.com/sajax/[/COLOR][/URL] (框架比较复杂,支持语言较多)

AJAX框架汇总: [URL=http://www.huihoo.com/web/ajax/ajax-frameworks.html][COLOR=#0000ff]http://www.huihoo.com/web/ajax/ajax-frameworks.html[/COLOR][/URL]

asp技术学习感谢您的参与
在线情况
2
  • 头像
  • 级别
  • 徽章
  • 声望+5
  • 积分11847
  • 经验342142
  • 文章11798
  • 注册2003-12-31
json只能适应当前的某些需求,绝对不是将来需要发展的目标
asp技术学习感谢您的参与
在线情况
3
  • 头像
  • 级别
    • 积分3233
    • 经验106599
    • 文章3078
    • 注册2005-10-16
    Atlas 框架中,这个好 简单易用
    asp技术学习感谢您的参与
    在线情况
    4
    • 头像
    • 小咪的爸爸
    • 级别
    • 徽章
    • 职务总版主
    • 声望+29
    • 积分39723
    • 经验1151179
    • 文章33857
    • 注册2003-08-14
    JSON很灵活,可以对XML起到一个补充作用。
    asp技术学习感谢您的参与
    在线情况
    5
    • 头像
    • 级别
      • 声望+1
      • 积分5720
      • 经验356517
      • 文章5795
      • 注册2003-04-28
      前几日翻过json 觉得还不如直接html..感觉素比较鸡肋 想来想去还是这几日看有无好的客户端xml解析器了..
      asp技术学习感谢您的参与
      在线情况
      6
      • 头像
      • 级别
      • 徽章
      • 声望+5
      • 积分11847
      • 经验342142
      • 文章11798
      • 注册2003-12-31
      [QUOTE][b]下面引用由[u]Xinsoft[/u]发表的内容:[/b] JSON很灵活,可以对XML起到一个补充作用。[/QUOTE] 我专门就类似的话题写了点东西. http://www.byval.org/data/article/article_32.html
      asp技术学习感谢您的参与
      在线情况
      7
      • 头像
      • 寻欢翼翼
      • 级别
        • 声望+1
        • 积分2161
        • 经验79822
        • 文章2153
        • 注册2003-12-10
        偶现在的项目就是完全js+xml+php的了。没感觉在数据处理上有多复杂。特别是楼主列的4个缺点一个都没感觉到。
        asp技术学习感谢您的参与
        Page created in 0.0159 seconds with 6 queries.