Java操作json的通用类

本文介绍了一个实用的工具类,用于实现JSON数据与Java对象之间的相互转换。该工具类支持多种数据类型,并能处理复杂的对象结构,如数组、列表等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 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;             


    }             


            


}         


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值