在新项目中,除了一些框架所依赖的配置文件使用XML外,基本没有使用XML。JSON基本替代了原来XML在程序内的位置。在以前,我们不愿意使用一种私有的格式,于是选择了XML。选择XML的理由,可能是大家都用它,所以我们也用它。

XML 是一种很好的技术,但是目前的情况来看,XML被滥用了,SOAP是XML被滥用的一种典型,程序内部的表示使用XML也是滥用的一种典型。看到的一种情况,一个对象toString使用XML格式输出,导致日志文件十分罗嗦,调试时,在watch窗口中看到一大堆<tag>。

在新项目中,认真考虑这种情况,找到了另外一种选择,那就是JSON。选择JSON的理由很充分:
1、JSON的解释性能要比XML要好,要简洁紧凑。
2、可读性要比XML好。JSON本身就是JavaScript的语法,和程序员的思维,而非文档编写的思维。
3、JavaScript原生支持,客户端浏览器不需要为此使用额外的解释器,在web环境中使用特别合适。

在java中使用json,目前需要注意一些情况:
1、目前开源的JSON-LIB代码质量不好,最好是在此基础之上修改一个版本,或者自己重新开发一个版本。
2、使用new Date的方式替代JSON-LIB中的{year:2007, month:12, ....}之类的方式
3、JSON-LIB中,object的propertyName在输出的时候,都带上"",例如{"name": "温少"}, 其中name是的双引号是不必要的,在输出时应该判断,不需要的就是就不加上"",减少网络流量。
4、JSON的解释器中,应该支持简单的表达式,例如new Date()、new Date(2939234723)之类的,这使得JSON的表达能力会更强一些。
5、JSON应该分两种,一种只支持简单格式,类似开源的JSON-LIB,一种是通过JavaScript解释器来实现的。后者在程序中传输数据时,能够得到更强大的表达能力,但是也会导致安全问题,需要慎重使用。
posted on 2008-03-08 14:24 温少的日志 阅读(3644) 评论(12)  编辑  收藏
Comments
  • # re: 使用JSON替代XML
    cnodin
    Posted @ 2008-03-08 17:42
    json的确在某些方面比xml使用起来方便。但是对于xml,用xpath选择层次比较深的节点,是不是比用json又更好呢?  回复  更多评论   
  • # re: 使用JSON替代XML
    HiMagic!
    Posted @ 2008-03-08 17:56
    json是不错,不过我的建议是在server -> client单向使用,不用json lib,在输出时写个几十行的程序就可以把Java object输出成json string,毕竟jscript是json的舞台。  回复  更多评论   
  • # re: 使用JSON替代XML
    交口称赞
    Posted @ 2008-03-08 18:29
    现在也在用json
    和jquery完美搭档  回复  更多评论   
  • # re: 使用JSON替代XML
    Strive
    Posted @ 2008-03-09 08:25
    我弄了一个 RpcSide 但是不知道如何控制权限, 可以前台调后台类,整合了Spring 按规范方式书写方法就能调用, 不知道 ArrayList 这些是如何解析回来, 普通的 String Number Boolean Date都能解析,而且不慢, 请楼主能给一个好的解决方案来处理 js Array 到 Java ArrayList 互相转换,传输,还有 AJAX安全处理的机制?>  回复  更多评论   
  • # re: 使用JSON替代XML
    久城
    Posted @ 2008-03-09 10:49
    请教一下,在server -> client时,大家用什么方法把Java Object输出成json String?  回复  更多评论   
  • # re: 使用JSON替代XML
    温少的日志
    Posted @ 2008-03-09 12:59
    @Strive
    既然你做的RPC,就应该使用方法的签名自动转换JSON数据到目标类型。[]格式的JSONArray转到目标的ArrayList是很容易的事情啊  回复  更多评论   
  • # re: 使用JSON替代XML
    温少的日志
    Posted @ 2008-03-09 13:00
    @久城
    如果你使用json-lib,可以让对象实现JSONString接口,另外json-lib有一些配置参数,但是json-lib做的不好。  回复  更多评论   
  • # re: 使用JSON替代XML
    fkpwolf
    Posted @ 2008-03-09 21:28
    这也只是在javascript的前提下  回复  更多评论   
  • # re: 使用JSON替代XML
    Strive
    Posted @ 2008-03-10 08:03
    我就发现 像 Map 这些类型,实在是不好转换, 如果你试用过 Dorado 它的处理方式也差不多, 只是按规定写方法。 也不知它们的安全性如何保证的。  回复  更多评论   
  • # re: 使用JSON替代XML
    itVincent
    Posted @ 2008-03-10 09:39
    我也在用json-lib的时候,对date类型有些困惑  回复  更多评论   
  • # re: 使用JSON替代XML
    一农
    Posted @ 2008-03-11 23:07
    对于web-rpc我用的就是json-rpc(现在叫jabsorb),当然我们又做了修改,以便和spring结合,另外去掉了初始化的过程。
    DWR的协议,还有国内的一些哥们写的RPC的协议不太喜欢,DWR的人说他们会支持多种协议,并且说他们的功能比json-rpc强,反正我们用不着。  回复  更多评论   
  • # re: 使用JSON替代XML
    长春日租房
    Posted @ 2011-11-15 13:35
    很好的方法啊,要记住  回复  更多评论   

只有注册用户登录后才能发表评论。


网站导航: