`

利用XStream做POJO到XML/JSON的转换

    博客分类:
  • JAVA
阅读更多

 

 

使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。

和其他序列化工具相比,XStream 有三个突出的特点:

  1. XStream 不关心序列化/逆序列化的类的字段的可见性。
  2. 序列化/逆序列化类的字段不需要 getter 和 setter 方法。
  3. 序列化/逆序列化的类不需要有默认构造函数。

不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类。

 

下面介绍一下XStream(http://xstream.codehaus.org )把POJO<<-->>XML/JSON的相互转化。

 

上代码例子

import java.util.ArrayList;
import java.util.List;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class Test {

	public static class Customer {
		private int custId;
		private String custName;
		private List<Order> orders;

		public int getCustId() {
			return custId;
		}

		public void setCustId(int custId) {
			this.custId = custId;
		}

		public String getCustName() {
			return custName;
		}

		public void setCustName(String custName) {
			this.custName = custName;
		}

		public List<Order> getOrders() {
			return orders;
		}

		public void setOrders(List<Order> orders) {
			this.orders = orders;
		}
	}

	public static class Order {
		private int orderId;
		private String orderName;
		private Product[] products;

		public int getOrderId() {
			return orderId;
		}

		public void setOrderId(int orderId) {
			this.orderId = orderId;
		}

		public String getOrderName() {
			return orderName;
		}

		public void setOrderName(String orderName) {
			this.orderName = orderName;
		}

		public Product[] getProducts() {
			return products;
		}

		public void setProducts(Product[] products) {
			this.products = products;
		}
	}

	public static class Product {
		private int prodId;
		private String prodName;
		private double prodPrice;

		public int getProdId() {
			return prodId;
		}

		public void setProdId(int prodId) {
			this.prodId = prodId;
		}

		public String getProdName() {
			return prodName;
		}

		public void setProdName(String prodName) {
			this.prodName = prodName;
		}

		public double getProdPrice() {
			return prodPrice;
		}

		public void setProdPrice(double prodPrice) {
			this.prodPrice = prodPrice;
		}
	}

	public static void main(String[] args) {

		Product p1 = new Product();
		p1.setProdId(20100001);
		p1.setProdName("苹果");
		p1.setProdPrice(8888);
		Product p2 = new Product();
		p2.setProdId(20100002);
		p2.setProdName("联想");
		p2.setProdPrice(6000);
		Product[] prods1 = new Product[] { p1, p2 };

		Order order1 = new Order();
		order1.setOrderId(101);
		order1.setOrderName("笔记本");
		order1.setProducts(prods1);
		List<Order> orders = new ArrayList<Order>();
		orders.add(order1);
		Customer customer = new Customer();
		customer.setCustId(100001);
		customer.setCustName("张三");
		customer.setOrders(orders);

		XStream xstream = new XStream(new DomDriver());
		xstream.alias("customer", Customer.class);
		xstream.alias("order", Order.class);
		xstream.alias("product", Product.class);

		String xml = xstream.toXML(customer);// 转换成 xml 格式

		System.out.println(xml); // 输出 xml 字符串

		System.out.println("---------------------JSON-----------------------------");

		// JSON
		XStream xstream4JSON = new XStream(new JsonHierarchicalStreamDriver());

		String json = xstream4JSON.toXML(customer);// 转换成 JSON 格式

		System.out.println(json); // 输出 JSON 字符串

	}

}
 

 

 

 打印结果

 

 

<customer>
  <custId>100001</custId>
  <custName>张三</custName>
  <orders>
    <order>
      <orderId>101</orderId>
      <orderName>笔记本</orderName>
      <products>
        <product>
          <prodId>20100001</prodId>
          <prodName>苹果</prodName>
          <prodPrice>8888.0</prodPrice>
        </product>
        <product>
          <prodId>20100002</prodId>
          <prodName>联想</prodName>
          <prodPrice>6000.0</prodPrice>
        </product>
      </products>
    </order>
  </orders>
</customer>
---------------------JSON-----------------------------
{"Zbingo.grid.lookup.Test$Customer": {
  "custId": 100001,
  "custName": "张三",
  "orders": [
    {
      "orderId": 101,
      "orderName": "笔记本",
      "products": [
        {
          "prodId": 20100001,
          "prodName": "苹果",
          "prodPrice": 8888.0
        },
        {
          "prodId": 20100002,
          "prodName": "联想",
          "prodPrice": 6000.0
        }
      ]
    }
  ]
}}
 

 

 

 

1
0
分享到:
评论

相关推荐

    XStream在JavaBean与XML/JSON 之间相互转换

    XStream作为Java中强大的序列化库,提供了便捷的JavaBean到XML/JSON的转换功能,且允许自定义转换规则以满足各种需求。同时,我们应注意其安全性问题,确保在使用过程中不会引入潜在的安全漏洞。通过熟练掌握XStream...

    xStream转换xml和json源码

    本篇文章将深入探讨xStream如何实现Java对象与XML和JSON的相互转换,并提供详细的代码示例。 ### 1. xStream的安装与引入 首先,你需要在项目中添加xStream的依赖。如果你使用的是Maven,可以在pom.xml文件中添加...

    xstream将xml文档转换成json对象

    在这个场景中,我们将探讨如何使用XStream将XML文档转换成Java对象,进而转化为JSON对象。 首先,我们需要引入XStream库。XStream的核心功能是能够将Java对象和XML之间的映射自动化,极大地简化了序列化和反序列化...

    XStream XML与Json转换

    XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。...XStream在进行数据类型转换时,使用系统缺省的类型转换器。同时,也支持用户自定义的类型转换器。

    转载 xStream完美转换XML、JSON

    标题 "xStream完美转换XML、JSON" 指的是使用xStream库在Java中进行XML与JSON数据格式之间的转换。xStream是一个强大的库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。在这个场景中,它同样...

    xStream完美转换XML、JSON

    xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    xml & json 转换工具

    在XML到JSON转换过程中,XStream可能首先用于将XML数据转换为Java对象,然后这些对象再由Json-lib处理成JSON格式。 XML到JSON的转换通常包括以下步骤: - 解析XML文档,将其转换为DOM(Document Object Model)树。...

    xml 与json转换代码

    在Java中,可以使用各种库来实现XML到JSON的转换,其中XStream是一个流行的库,它提供了强大的XML序列化和反序列化功能。XStream虽然主要设计用来XML操作,但也可以通过添加额外的转换器来处理JSON。首先,你需要...

    Xstream 类与Json之间转换

    Xstream和Json是两种广泛使用的工具,分别用于Java对象到XML和JSON格式的转换。本文将深入探讨Xstream库如何与Json进行交互,以及在实际应用中的使用。 Xstream是一个Java库,它提供了简单、高效的方式来序列化和反...

    《xStream完美转换XML、JSON》学习笔记

    首先,xStream的核心概念是通过类型转换器(Converter)来实现Java对象到XML/JSON的映射。它提供了一种直观的方式来定义对象如何被序列化,只需简单的注解或者配置即可。例如,通过`@XStreamAlias`注解,我们可以...

    xstream对象与xml转换

    通过实践,你会更熟悉如何在各种场景下利用XStream进行对象和XML之间的转换。 总之,XStream是一个强大的工具,可以帮助开发者轻松地在Java对象和XML之间进行转换。其简洁的API和自动类型转换能力使得它在处理序列...

    XML、JAVA、JSON多种方式互相转换

    - Google的Gson库可以通过第三方扩展如`com.thoughtworks.xstream:xstream`实现JSON到XML的转换。 3. Java对象到XML和JSON: - JAXB允许直接将Java对象转换为XML,反之亦然。通过创建对应的Java类并使用`...

    使用xstream解析xml,xml与pojo的双向转化,完整的java 工程

    本项目提供了一个完整的Java工程示例,演示了如何使用XStream实现XML到POJO以及POJO到XML的双向转化,并包含了必要的jar包和测试类,可以直接运行。 XStream是JVM平台上的一个开源库,由XStream Software公司开发,...

    Xstream操作Xml与Json.doc

    Xstream 是一个 Java 库,用于处理 XML 文件的序列化和反序列化,同时也支持将 JavaBean 转换为 JSON 格式。它的核心理念是通过简单的 API 设计,使得 XML 序列化过程变得简洁,无需额外的映射文件或辅助类。 ### 1...

    好用的xStream XML和JAVA对象互相转换的简单示例

    要将这个Java对象转换为XML,可以这样做: ```java import com.thoughtworks.xstream.XStream; // 创建XStream实例 XStream xstream = new XStream(); // 配置XStream,使其忽略默认的无参构造函数 xstream....

    xStream完美转换XML.docx

    【xStream 框架详解:Java对象与XML、JSON的完美转换】 xStream是一个强大的Java库,它提供了简单易用的API,用于将Java对象序列化为XML,以及将XML反序列化回Java对象。此外,xStream还支持JSON格式的转换。这个...

    xstream 让javabean和xml互相转换

    这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...

    xstream 1.3.1.jar bean对象转换为xml

    **使用XStream进行Bean到XML转换的步骤:** 1. **引入库**:首先,你需要在项目中引入XStream库,这可以通过添加对应的jar文件(如xstream-1.3.1.jar)或者在Maven或Gradle等构建工具中配置依赖完成。 2. **创建...

Global site tag (gtag.js) - Google Analytics