快速业务通道

使用XStream在JavaBean与XML/JSON之间相互转换 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
x.x.jar 包)。别名机制与前面的情况是一样的。仍然用 toXML() 方法,没有 toJSON() 方法,统一了接口方法以,用起来却让人有些费解。

看输出:

01.{"customer": { 02.  "custId": 1, 03.  "custName": "Unmi", 04.  "orders": [ 05.    { 06.      "orderId": 101, 07.      "orderName": "电器类", 08.      "products": [ 09.        { 10.          "prodId": 1001, 11.          "prodName": "电脑", 12.          "prodPrice": 4000.0 13.        }, 14.        { 15.          "prodId": 1002, 16.          "prodName": "空调", 17.          "prodPrice": 2000.0 18.        } 19.      ] 20.    } 21.  ] 22.}}

如果使用的是 JettisonMappedXmlDriver,你会看到输出的内容全在一行。

前面用于演示 JavaBean 到 XML/JSON 的转换的例子,还稍显复杂,涉及到了 List 和数组类型。其实 XStream 是通过反射来获取属性的,即使是私有的,而不依赖于 getter 方法,这点上比JSON-lib 要强。XStream 使用了像 JDBC Driver 的模式,通过更换 Driver 的方式来达成不同的内部实现。和 DWR/Struts 一样,它也是用 Converter 来做到数据类型的转换。

3. XML -> JavaBean

01.public static void main(String[] args) { 02. 03.    XStream xstream = new XStream(new DomDriver()); 04. 05.    //设置了这个别名才能识别下面 xml 中的 product 节点,否则要用类全限名称 06.    xstream.alias("product", Product.class); 07.    String xml = "<product><prodId>1001</prodId><prodName>电脑" + 08.            "</prodName><prodPrice>4000.0</prodPrice></product>"; 09.    Product prod = (Product)xstream.fromXML(xml); 10.    System.out.println(prod.getProdName()); 11.}

使用XStream在JavaBean与XML/JSON之间相互转换(4)

时间:2011-01-16 BlogJava 隔叶黄莺

执行上面的程序,能够输出产品名称“电脑”来,说明,由 XML 描述创建对象是成功的。相对于生成 XML 用的是 toXML(),通过 XML 构建对象用的方法是 fromXML(),同样要留意它的其他重载方法:

Object fromXML(InputStream input); Object fromXML(InputStream xml, Object root); Object fromXML(Reader xml); Object fromXML(Reader xml, Object root); Object fromXML(String xml); Object fromXML(String xml, Object root);

它们能从不同的输入源,可指定根节点来构建对象。

4. JSON -> JavaBean

01.public static void main(String[] args) { 02.    // 这里不能用 JsonHierarchicalStreamDriver 了,它只能用于 JavaBean->JSON 03.    XStream xstream = new XStream(new JettisonMappedXmlDriver()); 04. 05.    // 设置了这个别名才能识别下面 xml 中的 product 节点,否则要用类全限名称 06.    xstream.alias("product", Product.class); 07.    String json = "{product:{prodId: 1001,prodName: ''电脑'', prodPrice: 4000.0}}"; 08.   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号