Object与Json串相互转换工具JsonlibUtil

所需要的架包如下:

commons-beanutils-1.8.3.jar

commons-codec-1.3.jar

commons-collections-3.1.jar

commons-lang-2.4.jar

commons-logging-1.1.1.jar

ezmorph-1.0.2.jar

json-lib-2.4-jdk15.jar

poi-3.7.jar


代码如下:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
import net.sf.json.xml.XMLSerializer;

import org.apache.poi.hssf.record.formula.functions.T;

/**
 * Json-lib工具类
 * 
 * @author Administrator JsonlibUtil
 */
public class JsonlibUtil {

 // JSONObject.fromObject(object).toString()中object对象可以是实体类、map集合、各类型数组

 /**
  * 将Javabean对象转换成一个json的Object形式
  * 
  * @param bean
  * @return
  */
 /**
  * 
  * <p>
  * Description:将object对象转换成一个json的Object形式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param object
  * @return String
  */
 public static String jsonObjectfromObject(Object object) {
  return JSONObject.fromObject(object).toString();
 }

 /**
  * 将一个Javabean对象转换成json的Array格式。
  * 
  * @param bean
  * @return
  */
 /**
  * 
  * <p>
  * Description:将object对象转换成一个json的Array格式(此格式在前后两端会加上'['和']')<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param object
  * @return String
  */
 public static String jsonArrayfromObject(Object object) {
  return JSONArray.fromObject(object).toString();
 }

 /**
  * 
  * <p>
  * Description:将object对象转换成一个json的Serializer格式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param object
  * @return String
  */
 public static String jsonSerializerfromObject(Object object) {
  return JSONSerializer.toJSON(object).toString();
 }

 /**
  * 
  * <p>
  * Description: 将数组对象转换成一个json的Object形式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param o
  * @return String
  */
 public static String jsonObjectfromObject(Object[] o) {
  return JSONObject.fromObject(o).toString();
 }

 /**
  * 
  * <p>
  * Description:将一个数组对象转换成json的Array格式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param o
  * @return String
  */
 public static String jsonArrayfromObject(Object[] o) {
  return JSONArray.fromObject(o).toString();
 }

 /**
  * 
  * <p>
  * Description:将一个数组对象转换成json的Serializer格式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param o
  * @return String
  */
 public static String jsonSerializerfromObject(Object[] o) {
  return JSONSerializer.toJSON(o).toString();
 }

 /**
  * 
  * <p>
  * Description:将bean对象转换成JSONObject对象<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param t
  * @return JSONObject
  */
 public static JSONObject toJsonObject(T t) {
  JsonConfig jsonConfig = new JsonConfig();
  // Object.class为实体bean的class,如:Student.class
  jsonConfig.registerJsonValueProcessor(T.class,
    new JsonValueProcessor() {
     public Object processArrayValue(Object value,
       JsonConfig jsonConfig) {
      if (value == null) {
       return new Date();
      }
      return value;
     }

     public Object processObjectValue(String key, Object value,
       JsonConfig jsonConfig) {
      return value;
     }

    });
  JSONObject jsonObject = JSONObject.fromObject(t, jsonConfig);
  // String jsonString = jsonObject.toString();
  // Student student = (Student) JSONObject.toBean(jsonObject,
  // Student.class);
  // jsonObject.getString("birthday")
  return jsonObject;
 }

 // private String json =
 // "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+"\"email\":\"[email protected]\",\"id\":22,\"name\":\"tom\"}";

 /**
  * 
  * <p>
  * Description:将Json串转化成List<Map<String, Object>><br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param jsonStr
  * @return List<Map<String,Object>>
  */
 public static List<Map<String, Object>> parseJSON2List(String jsonStr) {
  JSONArray jsonArr = JSONArray.fromObject(jsonStr);
  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  Iterator<JSONObject> it = jsonArr.iterator();
  while (it.hasNext()) {
   JSONObject json2 = it.next();
   list.add(parseJSON2Map(json2.toString()));
  }
  return list;
 }

 /**
  * 
  * <p>
  * Description:将Json串转换成Map<String, Object><br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param jsonStr
  * @return Map<String,Object>
  */
 public static Map<String, Object> parseJSON2Map(String jsonStr) {
  Map<String, Object> map = new HashMap<String, Object>();
  // 最外层解析
  JSONObject json = JSONObject.fromObject(jsonStr);
  for (Object k : json.keySet()) {
   Object v = json.get(k);
   // 如果内层还是数组的话,继续解析
   if (v instanceof JSONArray) {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Iterator<JSONObject> it = ((JSONArray) v).iterator();
    while (it.hasNext()) {
     JSONObject json2 = it.next();
     list.add(parseJSON2Map(json2.toString()));
    }
    map.put(k.toString(), list);
   } else {
    map.put(k.toString(), v);
   }
  }
  return map;
 }

 /**
  * 
  * <p>
  * Description:将json的字符串转换成实体对象.<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @param t
  * @return T
  */
 public static T jsonToObject(String json, T t) {
  JSONObject jsonObject = JSONObject.fromObject(json);
  t = (T) JSONObject.toBean(jsonObject, T.class);
  return t;
 }

 /**
  * 
  * <p>
  * Description:将json字符串转成Java的Array数组<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @return Object[]
  */
 public static Object[] jsonToArray(String json) {
  JSONArray jsonArray = JSONArray.fromObject(json);
  return jsonArray.toArray();
 }

 /**
  * 
  * <p>
  * Description:将json字符串转成Java的实体类数组<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @param t
  * @return T[]
  */
 public static T[] jsonToArray(String json, T t) {
  JSONArray jsonArray = JSONArray.fromObject(json);
  T[] tt = (T[]) JSONArray.toArray(jsonArray, T.class);
  return tt;
 }

 /**
  * 
  * <p>
  * Description:将JSON字符串转成实体类的List集合<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @param t
  * @return List<T>
  */
 @SuppressWarnings({ "unchecked", "deprecation" })
 public static List<T> jsonToList(String json, T t) {
  JSONArray jsonArray = JSONArray.fromObject(json);
  List<T> list = JSONArray.toList(jsonArray, T.class);
  return list;
 }

 /**
  * 
  * <p>
  * Description:将json字符串转换成Collection接口<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @param t
  * @return Collection<T>
  */
 @SuppressWarnings("unchecked")
 public static Collection<T> jsonToCollection(String json, T t) {
  JSONArray jsonArray = JSONArray.fromObject(json);
  Collection<T> con = JSONArray.toCollection(jsonArray, T.class);
  return con;
 }

 /**
  * 
  * <p>
  * Description:将json字符串转换成Map集合<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param json
  * @param t
  * @param clazzMap
  *            如:Map<String, Class<?>> clazzMap = new HashMap<String,
  *            Class<?>>(); clazzMap.put("arr", String[].class);
  *            clazzMap.put("A", Student.class); clazzMap.put("B",
  *            Student.class);
  * @return Map<String,T>
  */
 @SuppressWarnings("unchecked")
 public static Map<String, T> jsonToMap(String json, T t,
   Map<String, Class<T>> clazzMap) {
  JSONObject jsonObject = JSONObject.fromObject(json);
  Map<String, T> mapBean = (Map<String, T>) JSONObject.toBean(jsonObject,
    Map.class, clazzMap);
  return mapBean;
 }

 /**
  * 
  * <p>
  * Description:将object对象转换为XML格式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param object
  * @return String
  */
 public static String jsonToXml(Object object) {
  XMLSerializer xmlSerializer = new XMLSerializer();
  return xmlSerializer.write(JSONArray.fromObject(object));
 }

 /**
  * 
  * <p>
  * Description:将Object数组转换为XML格式<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param object
  * @return String
  */
 public static String jsonToXml(Object[] object) {
  XMLSerializer xmlSerializer = new XMLSerializer();
  return xmlSerializer.write(JSONArray.fromObject(object));
 }

 /**
  * 
  * <p>
  * Description:将xml的字符串内容,转换成Java的Array对象<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param str
  * @return JSONArray
  */
 public static JSONArray xmlToJSONArray(String str) {
  JSONArray json = (JSONArray) new XMLSerializer().read(str);
  return json;
 }

 /**
  * 
  * <p>
  * Description:将xml的字符串内容,转换成Java的数组<br />
  * </p>
  * 
  * @author yangshijin
  * @version 0.1 2014年8月14日
  * @param str
  * @param t
  * @return Object[]
  */
 public static Object[] xmlToArray(String str, T t) {
  JSONArray json = (JSONArray) new XMLSerializer().read(str);
  return (T[]) JSONArray.toArray(json, T.class);
 }

 public static void main(String[] args) throws Exception {
  String IDNumber = "610122198608241229";
  String Name = "马导丽";
  Map<String, String> map = new HashMap<String, String>();
  map.put("IDNumber", IDNumber);
  map.put("Name", Name);
  String jsonStr = JsonlibUtil.jsonObjectfromObject(map);
  System.err.println(jsonStr);
  Map<String, Object> map2 = JsonlibUtil.parseJSON2Map(jsonStr);
  System.err.println(map2);

  System.err.println("=================");
  System.err.println(JsonlibUtil.jsonArrayfromObject(map));
  System.err.println(JsonlibUtil.jsonSerializerfromObject(map));

  System.err.println(JsonlibUtil.parseJSON2Map(JsonlibUtil
    .jsonSerializerfromObject(map)));
 }
}

猜你喜欢

转载自blog.csdn.net/weixin_42231507/article/details/80899363