所需要的架包如下:
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@123.com\",\"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)));
}
}