JavaBean、JSON、XML的相互转换,JSON-lib(2.4)

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);
		}
	}
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值