Java操作json的通用类

来源:互联网 发布:淘宝买到假酒怎么索赔 编辑:程序博客网 时间:2024/05/04 12:14
package com.baiyyy.polabs.util.json;                 import java.text.ParseException;         import java.util.ArrayList;         import java.util.Date;         import java.util.HashMap;         import java.util.Iterator;         import java.util.List;         import java.util.Map;                 import com.baiyyy.polabs.util.DateUtil;                 import net.sf.json.JSONArray;         import net.sf.json.JSONObject;         import net.sf.json.JsonConfig;         import net.sf.json.util.CycleDetectionStrategy;                 /**       * 处理json的工具类,负责json数据转换成java对象和java对象转换成json       *        * @author yongtree       * @date 2008-11-22 上午10:47:13       * @version 1.0       */        public class JsonUtil {                     /**           * 从一个JSON 对象字符格式中得到一个java对象           *            * @param jsonString           * @param pojoCalss           * @return           */            public static Object getObject4JsonString(String jsonString, Class pojoCalss) {                 Object pojo;                 JSONObject jsonObject = JSONObject.fromObject(jsonString);                 pojo = JSONObject.toBean(jsonObject, pojoCalss);                 return pojo;             }                             /**           * 从json HASH表达式中获取一个map,改map支持嵌套功能           *            * @param jsonString           * @return           */            public static Map getMap4Json(String jsonString) {                 JSONObject jsonObject = JSONObject.fromObject(jsonString);                 Iterator keyIter = jsonObject.keys();                 String key;                 Object value;                 Map valueMap = new HashMap();                         while (keyIter.hasNext()) {                     key = (String) keyIter.next();                     value = jsonObject.get(key);                     valueMap.put(key, value);                 }                         return valueMap;             }                             /**           * 从json数组中得到相应java数组           *            * @param jsonString           * @return           */            public static Object[] getObjectArray4Json(String jsonString) {                 JSONArray jsonArray = JSONArray.fromObject(jsonString);                 return jsonArray.toArray();                     }                             /**           * 从json对象集合表达式中得到一个java对象列表           *            * @param jsonString           * @param pojoClass           * @return           */            public static List getList4Json(String jsonString, Class pojoClass) {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 JSONObject jsonObject;                 Object pojoValue;                         List list = new ArrayList();                 for (int i = 0; i < jsonArray.size(); i++) {                             jsonObject = jsonArray.getJSONObject(i);                     pojoValue = JSONObject.toBean(jsonObject, pojoClass);                     list.add(pojoValue);                         }                 return list;                     }                             /**           * 从json数组中解析出java字符串数组           *            * @param jsonString           * @return           */            public static String[] getStringArray4Json(String jsonString) {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 String[] stringArray = new String[jsonArray.size()];                 for (int i = 0; i < jsonArray.size(); i++) {                     stringArray[i] = jsonArray.getString(i);                         }                         return stringArray;             }                             /**           * 从json数组中解析出javaLong型对象数组           *            * @param jsonString           * @return           */            public static Long[] getLongArray4Json(String jsonString) {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 Long[] longArray = new Long[jsonArray.size()];                 for (int i = 0; i < jsonArray.size(); i++) {                     longArray[i] = jsonArray.getLong(i);                         }                 return longArray;             }                             /**           * 从json数组中解析出java Integer型对象数组           *            * @param jsonString           * @return           */            public static Integer[] getIntegerArray4Json(String jsonString) {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 Integer[] integerArray = new Integer[jsonArray.size()];                 for (int i = 0; i < jsonArray.size(); i++) {                     integerArray[i] = jsonArray.getInt(i);                         }                 return integerArray;             }                     /**           * 从json数组中解析出java Date 型对象数组,使用本方法必须保证           *            * @param jsonString           * @return           * @throws ParseException           */            public static Date[] getDateArray4Json(String jsonString, String DataFormat)                     throws ParseException {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 Date[] dateArray = new Date[jsonArray.size()];                 String dateString;                 Date date;                         for (int i = 0; i < jsonArray.size(); i++) {                     dateString = jsonArray.getString(i);                     date = DateUtil.parseDate(dateString, DataFormat);                     dateArray[i] = date;                         }                 return dateArray;             }                             /**           * 从json数组中解析出java Integer型对象数组           *            * @param jsonString           * @return           */            public static Double[] getDoubleArray4Json(String jsonString) {                         JSONArray jsonArray = JSONArray.fromObject(jsonString);                 Double[] doubleArray = new Double[jsonArray.size()];                 for (int i = 0; i < jsonArray.size(); i++) {                     doubleArray[i] = jsonArray.getDouble(i);                         }                 return doubleArray;             }                             /**           * 将java对象转换成json字符串           *            * @param javaObj           * @return           */            public static String getJsonString4JavaPOJO(Object javaObj) {                         JSONObject json;                 json = JSONObject.fromObject(javaObj);                 return json.toString();                     }                     /**           * 将java对象转换成json字符串,并设定日期格式           *            * @param javaObj           * @param dataFormat           * @return           */            public static String getJsonString4JavaPOJO(Object javaObj,                     String dataFormat) {                         JSONObject json;                 JsonConfig jsonConfig = configJson(dataFormat);                 json = JSONObject.fromObject(javaObj, jsonConfig);                 return json.toString();                     }                     /**           * JSON 时间解析器具           *            * @param datePattern           * @return           */            public static JsonConfig configJson(String datePattern) {                 JsonConfig jsonConfig = new JsonConfig();                 jsonConfig.setExcludes(new String[] { "" });                 jsonConfig.setIgnoreDefaultExcludes(false);                 jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);                 jsonConfig.registerJsonValueProcessor(Date.class,                         new JsonDateValueProcessor(datePattern));                         return jsonConfig;             }                             /**           * 除去不想生成的字段(特别适合去掉级联的对象)+时间转换           * @param excludes 除去不想生成的字段           * @param datePattern           * @return           */            public static JsonConfig configJson(String[] excludes, String datePattern) {                 JsonConfig jsonConfig = new JsonConfig();                 jsonConfig.setExcludes(excludes);                 jsonConfig.setIgnoreDefaultExcludes(true);                 jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);                 jsonConfig.registerJsonValueProcessor(Date.class,                         new JsonDateValueProcessor(datePattern));                         return jsonConfig;             }                 }          package com.baiyyy.polabs.util.json;                 import java.text.SimpleDateFormat;         import java.util.Date;                 import net.sf.json.JsonConfig;         import net.sf.json.processors.JsonValueProcessor;                 /**       *        * @author yongtree       * @date 2008-11-22 上午10:54:19       * @version 1.0       */        public class JsonDateValueProcessor implements JsonValueProcessor {                               private String format = "yyyy-MM-dd HH:mm:ss";                           public JsonDateValueProcessor() {                           }                           public JsonDateValueProcessor(String format) {                    this.format = format;                }                           public Object processArrayValue(Object value, JsonConfig jsonConfig) {                    String[] obj = {};                    if (value instanceof Date[]) {                        SimpleDateFormat sf = new SimpleDateFormat(format);                        Date[] dates = (Date[]) value;                        obj = new String[dates.length];                        for (int i = 0; i < dates.length; i++) {                            obj[i] = sf.format(dates[i]);                        }                    }                    return obj;                }                           public Object processObjectValue(String key, 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;                }                       }   


 

原创粉丝点击