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

来源:互联网 发布:饥荒左上角数据怎么关 编辑:程序博客网 时间:2024/05/18 01:07

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;}@Overridepublic 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() {}@Testpublic 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);}@Testpublic void testGetJsonFromPojo() throws Exception {Book book = new Book("白夜行", "东野圭吾", "南海出版公司",  39.50);String json = ConversionUtil.getJsonFromPojo(book);System.out.println(json);}@Testpublic 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);}@Testpublic 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);}@Testpublic void testGetPojoFromJson() throws Exception {String json = "{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}";Book book = ConversionUtil.getPojoFromJson(json, Book.class);System.out.println(book);}@Testpublic 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);}}@Testpublic 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);}}@Testpublic void testGetMapFromJson() throws Exception {String json = "{\"author\":\"东野圭吾\",\"price\":39.5,\"publisher\":\"南海出版公司\",\"title\":\"白夜行\"}";Map<String, Object> map = ConversionUtil.getMapFromJson(json);System.out.println(map);}@Testpublic 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);}@Testpublic 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);}@Testpublic 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);}}@Testpublic 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
原创粉丝点击