1. 定义一个JavaBean:
package com.huey.dream.bean;
public class Book {
private String title;
private String author;
private String publisher;
private double price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Book() {
super();
}
public Book(String title, String author, String publisher, double price) {
super();
this.title = title;
this.author = author;
this.publisher = publisher;
this.price = price;
}
@Override
public String toString() {
return "Book [title=" + title + ", author=" + author + ", publisher="
+ publisher + ", price=" + price + "]";
}
}
2. 转换工具:
package com.huey.dream.utils;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.WordUtils;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.xml.XMLSerializer;
/**
* JavaBean、JSON、XML转换工具
* @author huey
* @version 1.0
* @created 2014-12-23
*/
public class ConversionUtil {
/**
* 将Java对象转换成XML字符串
* @param obj
* @return
*/
public static String getXmlFromObj(Object obj) {
String className = obj.getClass().getSimpleName();
String objName = WordUtils.uncapitalize(className);
if (obj instanceof Object[]) {
objName = objName.replace("[]", "");
}
String eleName = objName;
String arrayName = objName + "s";
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setArrayName(arrayName);
xmlSerializer.setElementName(eleName);
xmlSerializer.setObjectName(objName);
return xmlSerializer.write(JSONSerializer.toJSON(obj));
}
/**
* 将POJO转换成JSON字符串
* @param pojo
* @return
*/
public static String getJsonFromPojo(Object pojo) {
return JSONObject.fromObject(pojo).toString();
}
/**
* 将JavaBean、Map、List、数组转换成JSON字符串
* @param obj
* @return
*/
public static String getJsonFromObj(Object obj) {
return JSONSerializer.toJSON(obj).toString();
}
/**
* 将JSON字符串转换成XML字符串
* @param json
* @return
*/
public static String getXmlFromJson(String json) {
XMLSerializer xmlSerializer = new XMLSerializer();
// xmlSerializer.setArrayName(arrayName);
// xmlSerializer.setElementName(eleName);
// xmlSerializer.setObjectName(objName);
return xmlSerializer.write(JSONSerializer.toJSON(json));
}
/**
* 将JSON字符串转换成POJO
* @param <T>
* @param json
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T getPojoFromJson(String json, Class<T> clazz) {
JSONObject jsonObj = JSONObject.fromObject(json);
T obj = (T) JSONObject.toBean(jsonObj, clazz);
return obj;
}
/**
* 将JSON字符串转换成数组
* @param <T>
* @param json
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T[] getArrayFromJson(String json, Class<T> clazz) {
JSONArray jsonArray = JSONArray.fromObject(json);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
jsonConfig.setRootClass(clazz);
T[] objArray = (T[]) JSONSerializer.toJava(jsonArray, jsonConfig);
return objArray;
}
/**
* 将JSON字符串转换成List
* @param <T>
* @param json
* @param clazz
* @return
*/
public static <T> List<T> getListFromJson(String json, Class<T> clazz) {
T[] objArray = getArrayFromJson(json, clazz);
return Arrays.asList(objArray);
}
@SuppressWarnings("unchecked")
public static Map<String, Object> getMapFromJson(String json) {
JSONObject jsonObj = JSONObject.fromObject(json);
Map<String, Object> map = (Map<String, Object>) JSONObject.toBean(jsonObj, Map.class);
return map;
}
/**
* 将XML字符串转换成JSON字符串
* @param xml
* @return
*/
public static String getJsonFromXml(String xml) {
XMLSerializer xmlSerializer = new XMLSerializer();
return xmlSerializer.read(xml).toString();
}
/**
* 将XML字符串转换成POJO
* @param <T>
* @param xml
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static<T> T getPojoFromXml(String xml, Class<T> clazz) {
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(xml);
JSONObject jsonObject = (JSONObject) json;
return (T) JSONObject.toBean(jsonObject, clazz);
}
/**
* 将XML字符串转换成数组
* @param <T>
* @param xml
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T[] getArrayFromXml(String xml, Class<T> clazz) {
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(xml);
JSONArray jsonArray = (JSONArray) json;
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
jsonConfig.setRootClass(clazz);
T[] objArray = (T[]) JSONSerializer.toJava(jsonArray, jsonConfig);
return objArray;
}
/**
* 将XML字符串转换成List
* @param <T>
* @param json
* @param clazz
* @return
*/
public static <T> List<T> getListFromXml(String xml, Class<T> clazz) {
T[] objArray = getArrayFromXml(xml, clazz);
return Arrays.asList(objArray);
}
}
3. 测试
package com.huey.dream.test;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import com.huey.dream.bean.Book;
import com.huey.dream.utils.ConversionUtil;
public class ConversionUtilTest {
public ConversionUtilTest() {
}
@Test
public void testGetXmlFromObj() throws Exception {
Book[] books = new Book[] {
new Book("白夜行", "东野圭吾", "南海出版公司", 39.50),
new Book("百年孤独", "马尔克斯", "南海出版公司", 39.50),
};
String xml = ConversionUtil.getXmlFromObj(books);
System.out.println(xml);
xml = ConversionUtil.getXmlFromObj(Arrays.asList(books));
System.out.println(xml);
xml = ConversionUtil.getXmlFromObj(books[0]);
System.out.println(xml);
}
@Test
public void testGetJsonFromPojo() throws Exception {
Book book = new Book("白夜行", "东野圭吾", "南海出版公司", 39.50);
String json = ConversionUtil.getJsonFromPojo(book);
System.out.println(json);
}
@Test
public void testGetJsonFromObj() throws Exception {
Book[] books = new Book[] {
new Book("白夜行", "东野圭吾", "南海出版公司", 39.50),
new Book("百年孤独", "马尔克斯", "南海出版公司", 39.50),
};
String json = ConversionUtil.getJsonFromObj(Arrays.asList(books));
System.out.println(json);
Map<String, Object> book = new HashMap<String, Object>();
book.put("title", "白夜行");
book.put("author", "东野圭吾");
book.put("publisher", "南海出版公司");
book.put("price", 39.50);
json = ConversionUtil.getJsonFromObj(Arrays.asList(books));
System.out.println(json);
}
@Test
public void testGetXmlFromJson() throws Exception {
String json = "[{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}," +
"{\"author\":\"马尔克斯\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"百年孤独\"}]";
String xml = ConversionUtil.getXmlFromJson(json);
System.out.println(xml);
}
@Test
public void testGetPojoFromJson() throws Exception {
String json = "{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}";
Book book = ConversionUtil.getPojoFromJson(json, Book.class);
System.out.println(book);
}
@Test
public void testGetArrayFromJson() throws Exception {
String json = "[{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}," +
"{\"author\":\"马尔克斯\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"百年孤独\"}]";
Book[] books = ConversionUtil.getArrayFromJson(json, Book.class);
for (Book book : books) {
System.out.println(book);
}
}
@Test
public void testGetListFromJson() throws Exception {
String json = "[{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}," +
"{\"author\":\"马尔克斯\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"百年孤独\"}]";
List<Book> books = ConversionUtil.getListFromJson(json, Book.class);
for (Book book : books) {
System.out.println(book);
}
}
@Test
public void testGetMapFromJson() throws Exception {
String json = "{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}";
Map<String, Object> map = ConversionUtil.getMapFromJson(json);
System.out.println(map);
}
@Test
public void testGetJsonFromXml() throws Exception {
String xml = "<book><author>东野圭吾</author><price>39.5</price><publisher>南海出版公司</publisher><title>白夜行</title></book>";
String json = ConversionUtil.getJsonFromXml(xml);
System.out.println(json);
}
@Test
public void testGetPojoFromXml() {
String xml = "<book><author>东野圭吾</author><price>39.5</price><publisher>南海出版公司</publisher><title>白夜行</title></book>";
Book book = ConversionUtil.getPojoFromXml(xml, Book.class);
System.out.println(book);
}
@Test
public void testGetArrayFromXml() throws Exception {
String xml = "<books><book><author>东野圭吾</author><price>39.5</price><publisher>南海出版公司</publisher><title>白夜行</title></book><book><author>马尔克斯</author><price>39.5</price><publisher>南海出版公司</publisher><title>百年孤独</title></book></books>";
Book[] books = ConversionUtil.getArrayFromXml(xml, Book.class);
for (Book book : books) {
System.out.println(book);
}
}
@Test
public void testGetListFromXml() throws Exception {
String xml = "<books><book><author>东野圭吾</author><price>39.5</price><publisher>南海出版公司</publisher><title>白夜行</title></book><book><author>马尔克斯</author><price>39.5</price><publisher>南海出版公司</publisher><title>百年孤独</title></book></books>";
List<Book> books = ConversionUtil.getListFromXml(xml, Book.class);
for (Book book : books) {
System.out.println(book);
}
}
}