自己写的JSON 工具类,封装一些常用的方法
2014-07-01 15:20
591 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一个新的项目要用到JSON ,很多工具要手写,所以写一个工具类出来,以后可以直接拿过来用,这里就算保存一下。</span>
废话不多说,直接上代码,借鉴了网上一些文章的代码。
package util; import java.text.SimpleDateFormat; 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.ezmorph.MorpherRegistry; import net.sf.ezmorph.object.DateMorpher; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; import net.sf.json.util.JSONUtils; import net.sf.json.xml.XMLSerializer; /** * Json工具类 * @author LiuQi * */ public class JsonUtil { /** * 设置日期转换格式 */ static { // 注册器 MorpherRegistry mr = JSONUtils.getMorpherRegistry(); // 可转换的日期格式,即Json串中可以出现以下格式的日期与时间 DateMorpher dm = new DateMorpher(new String[] { DateUtil.YYYY_MM_DD, DateUtil.YYYY_MM_DD_HH_MM_ss, DateUtil.HH_MM_ss, DateUtil.YYYYMMDD, DateUtil.YYYYMMDDHHMMSS, DateUtil.HHMMss }); mr.registerMorpher(dm); } /** * 从json串转换成实体对象 * * @param jsonObjStr * @param clazz * @return */ public static Object getDtoFromJsonObjStr(String jsonObjStr, Class<?> clazz) { return JSONObject.toBean(JSONObject.fromObject(jsonObjStr), clazz); } /** * 从json串转换成实体对象,并且实体集合属性存有另外实体Bean * * @param jsonObjStr * @param clazz * @param classMap * @return Object */ public static Object getDtoFromJsonObjStr(String jsonObjStr, Class<?> clazz, Map<?, ?> classMap) { return JSONObject.toBean(JSONObject.fromObject(jsonObjStr), clazz, classMap); } /** * 把一个json数组串转换成普通数组 * * @param jsonArrStr * @return Object[] */ public static Object[] getArrFromJsonArrStr(String jsonArrStr) { return JSONArray.fromObject(jsonArrStr).toArray(); } /** * 把一个json数组串转换成实体数组 * * @param jsonArrStr * @param clazz * @return Object[] */ public static Object[] getDtoArrFromJsonArrStr(String jsonArrStr, Class<?> clazz) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); Object[] objArr = new Object[jsonArr.size()]; for (int i = 0; i < jsonArr.size(); i++) { objArr[i] = JSONObject.toBean(jsonArr.getJSONObject(i), clazz); } return objArr; } /** * 把一个json数组串转换成实体数组,且数组元素的属性含有另外实例Bean * * @param jsonArrStr * @param clazz * @param classMap * @return Object[] */ public static Object[] getDtoArrFromJsonArrStr(String jsonArrStr, Class<?> clazz, Map<?, ?> classMap) { JSONArray array = JSONArray.fromObject(jsonArrStr); Object[] obj = new Object[array.size()]; for (int i = 0; i < array.size(); i++) { JSONObject jsonObject = array.getJSONObject(i); obj[i] = JSONObject.toBean(jsonObject, clazz, classMap); } return obj; } /** * 把一个json数组串转换成存放普通类型元素的集合 * * @param jsonArrStr * @return List */ public static List<Object> getListFromJsonArrStr(String jsonArrStr) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); List<Object> list = new ArrayList<Object>(); for (int i = 0; i < jsonArr.size(); i++) { list.add(jsonArr.get(i)); } return list; } /** * 把一个json数组串转换成集合,且集合里存放的为实例Bean * * @param jsonArrStr * @param clazz * @return List */ public static List<Object> getListFromJsonArrStr(String jsonArrStr, Class<?> clazz) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); List<Object> list = new ArrayList<Object>(); for (int i = 0; i < jsonArr.size(); i++) { list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz)); } return list; } /** * 把一个json数组串转换成集合,且集合里的对象的属性含有另外实例Bean * * @param jsonArrStr * @param clazz * @param classMap * @return List */ public static List<Object> getListFromJsonArrStr(String jsonArrStr, Class<?> clazz, Map<?, ?> classMap) { JSONArray jsonArr = JSONArray.fromObject(jsonArrStr); List<Object> list = new ArrayList<Object>(); for (int i = 0; i < jsonArr.size(); i++) { list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz, classMap)); } return list; } /** * 把json对象串转换成map对象 * * @param jsonObjStr * @return Map */ @SuppressWarnings("unchecked") public static Map<String, Object> getMapFromJsonObjStr(String jsonObjStr) { JSONObject jsonObject = JSONObject.fromObject(jsonObjStr); Map<String, Object> map = new HashMap<String, Object>(); for (Iterator<String> iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); map.put(key, jsonObject.get(key)); } return map; } /** * 把json对象串转换成map对象,且map对象里存放的为其他实体Bean * * @param jsonObjStr * @param clazz * @return Map */ @SuppressWarnings("unchecked") public static Map<String, Object> getMapFromJsonObjStr(String jsonObjStr, Class<?> clazz) { JSONObject jsonObject = JSONObject.fromObject(jsonObjStr); Map<String, Object> map = new HashMap<String, Object>(); for (Iterator<String> iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); map.put(key, JSONObject.toBean(jsonObject.getJSONObject(key), clazz)); } return map; } /** * 把json对象串转换成map对象,且map对象里存放的其他实体Bean还含有另外实体Bean * * @param jsonObjStr * @param clazz * @param classMap * @return Map */ @SuppressWarnings("unchecked") public static Map<String, Object> getMapFromJsonObjStr(String jsonObjStr, Class<?> clazz, Map<?, ?> classMap) { JSONObject jsonObject = JSONObject.fromObject(jsonObjStr); Map<String, Object> map = new HashMap<String, Object>(); for (Iterator<String> iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); map.put(key, JSONObject.toBean(jsonObject.getJSONObject(key), clazz, classMap)); } return map; } /** * 把实体Bean、Map对象、数组、列表集合转换成Json串 * * @param obj * @return * @throws Exception * */ public static String getJsonStr(Object obj) { String jsonStr = null; // Json配置 JsonConfig jsonCfg = new JsonConfig(); // 注册日期处理器 jsonCfg.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor(DateUtil.YYYY_MM_DD_HH_MM_ss)); if (obj == null) { return "{}"; } if (obj instanceof Collection || obj instanceof Object[]) { jsonStr = JSONArray.fromObject(obj, jsonCfg).toString(); } else { jsonStr = JSONObject.fromObject(obj, jsonCfg).toString(); } return jsonStr; } /** * 把json串、数组、集合(collection map)、实体Bean转换成XML XML * * @param obj * @return * @throws Exception * */ public static String getXMLFromObj(Object obj) { XMLSerializer xmlSerial = new XMLSerializer(); // Json配置 JsonConfig jsonCfg = new JsonConfig(); // 注册日期处理器 jsonCfg.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor(DateUtil.YYYY_MM_DD_HH_MM_ss)); if ((String.class.isInstance(obj) && String.valueOf(obj) .startsWith("[")) || obj.getClass().isArray() || Collection.class.isInstance(obj)) { JSONArray jsonArr = JSONArray.fromObject(obj, jsonCfg); return xmlSerial.write(jsonArr); } else { JSONObject jsonObj = JSONObject.fromObject(obj, jsonCfg); return xmlSerial.write(jsonObj); } } /** * 从XML转json串 * * @param xml * @return String */ public static String getJsonStrFromXML(String xml) { XMLSerializer xmlSerial = new XMLSerializer(); return String.valueOf(xmlSerial.read(xml)); } } /** * json日期值处理器实现 */ class JsonDateValueProcessor implements JsonValueProcessor { private String format = DateUtil.YYYY_MM_DD_HH_MM_ss; public JsonDateValueProcessor() { } public JsonDateValueProcessor(String format) { this.format = format; } public Object processArrayValue(Object value, JsonConfig jsonConfig) { return process(value, jsonConfig); } public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { return process(value, jsonConfig); } private Object process(Object value, JsonConfig jsonConfig) { if (value instanceof Date) { String str = new SimpleDateFormat(format).format((Date) value); return str; } return value == null ? null : value.toString(); } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } }
相关文章推荐
- 时间日期工具类 封装工作中常用的一些时间日期计算方法(转+自己修改)
- 自己重新实现QTP封装的一些常用的方法
- 自己整理的一些开发时候常用的js方法封装
- Java中Calendar工具类的一些常用方法
- 自己常用方法封装
- appium一些常用方法的封装
- 自己常用方法封装
- wap获取手机号码,今天uc开启云加速,用公司的工具类获取是null,但是另外一个项目可以,应该这个项目的工具旧少了一些代码。。,网上找了 方法自己加可以
- 在Unity中常用到的一些安卓方法封装
- 文件工具类,一些常用的文件方法
- 日期操作工具类之 Calendar的常用方法封装
- ASP.NET 程序设计中常用到的一些通用函数 自己的封装 可以做成dll来使用。
- C# Windows Api的一些方法 封装 以及 常用参数 .
- 关于日期的一些常用方法的封装——dates.js
- jackson 工具类的 3 个常用方法,封装成工具类
- appium一些常用方法的封装
- C# Windows Api的一些方法 封装 以及 常用参数
- 一些自己常用的封装的代码
- Java Hibernate常用方法封装工具类
- 自己封装的json工具类