java操作json的通用类(转帖)

  1. package com.baiyyy.polabs.util.json;   
  2.   
  3. import java.text.ParseException;   
  4. import java.util.ArrayList;   
  5. import java.util.Date;   
  6. import java.util.HashMap;   
  7. import java.util.Iterator;   
  8. import java.util.List;   
  9. import java.util.Map;   
  10.   
  11. import com.baiyyy.polabs.util.DateUtil;   
  12.   
  13. import net.sf.json.JSONArray;   
  14. import net.sf.json.JSONObject;   
  15. import net.sf.json.JsonConfig;   
  16. import net.sf.json.util.CycleDetectionStrategy;   
  17.   
  18. /**  
  19.  * 处理json的工具类,负责json数据转换成java对象和java对象转换成json  
  20.  *   
  21.  * @author yongtree  
  22.  * @date 2008-11-22 上午10:47:13  
  23.  * @version 1.0  
  24.  */  
  25. public class JsonUtil {   
  26.   
  27.     /**  
  28.      * 从一个JSON 对象字符格式中得到一个java对象  
  29.      *   
  30.      * @param jsonString  
  31.      * @param pojoCalss  
  32.      * @return  
  33.      */  
  34.     public static Object getObject4JsonString(String jsonString, Class pojoCalss) {   
  35.         Object pojo;   
  36.         JSONObject jsonObject = JSONObject.fromObject(jsonString);   
  37.         pojo = JSONObject.toBean(jsonObject, pojoCalss);   
  38.         return pojo;   
  39.     }   
  40.   
  41.   
  42.     /**  
  43.      * 从json HASH表达式中获取一个map,改map支持嵌套功能  
  44.      *   
  45.      * @param jsonString  
  46.      * @return  
  47.      */  
  48.     public static Map getMap4Json(String jsonString) {   
  49.         JSONObject jsonObject = JSONObject.fromObject(jsonString);   
  50.         Iterator keyIter = jsonObject.keys();   
  51.         String key;   
  52.         Object value;   
  53.         Map valueMap = new HashMap();   
  54.   
  55.         while (keyIter.hasNext()) {   
  56.             key = (String) keyIter.next();   
  57.             value = jsonObject.get(key);   
  58.             valueMap.put(key, value);   
  59.         }   
  60.   
  61.         return valueMap;   
  62.     }   
  63.   
  64.   
  65.     /**  
  66.      * 从json数组中得到相应java数组  
  67.      *   
  68.      * @param jsonString  
  69.      * @return  
  70.      */  
  71.     public static Object[] getObjectArray4Json(String jsonString) {   
  72.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  73.         return jsonArray.toArray();   
  74.   
  75.     }   
  76.   
  77.   
  78.     /**  
  79.      * 从json对象集合表达式中得到一个java对象列表  
  80.      *   
  81.      * @param jsonString  
  82.      * @param pojoClass  
  83.      * @return  
  84.      */  
  85.     public static List getList4Json(String jsonString, Class pojoClass) {   
  86.   
  87.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  88.         JSONObject jsonObject;   
  89.         Object pojoValue;   
  90.   
  91.         List list = new ArrayList();   
  92.         for (int i = 0; i < jsonArray.size(); i++) {   
  93.   
  94.             jsonObject = jsonArray.getJSONObject(i);   
  95.             pojoValue = JSONObject.toBean(jsonObject, pojoClass);   
  96.             list.add(pojoValue);   
  97.   
  98.         }   
  99.         return list;   
  100.   
  101.     }   
  102.   
  103.   
  104.     /**  
  105.      * 从json数组中解析出java字符串数组  
  106.      *   
  107.      * @param jsonString  
  108.      * @return  
  109.      */  
  110.     public static String[] getStringArray4Json(String jsonString) {   
  111.   
  112.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  113.         String[] stringArray = new String[jsonArray.size()];   
  114.         for (int i = 0; i < jsonArray.size(); i++) {   
  115.             stringArray[i] = jsonArray.getString(i);   
  116.   
  117.         }   
  118.   
  119.         return stringArray;   
  120.     }   
  121.   
  122.   
  123.     /**  
  124.      * 从json数组中解析出javaLong型对象数组  
  125.      *   
  126.      * @param jsonString  
  127.      * @return  
  128.      */  
  129.     public static Long[] getLongArray4Json(String jsonString) {   
  130.   
  131.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  132.         Long[] longArray = new Long[jsonArray.size()];   
  133.         for (int i = 0; i < jsonArray.size(); i++) {   
  134.             longArray[i] = jsonArray.getLong(i);   
  135.   
  136.         }   
  137.         return longArray;   
  138.     }   
  139.   
  140.   
  141.     /**  
  142.      * 从json数组中解析出java Integer型对象数组  
  143.      *   
  144.      * @param jsonString  
  145.      * @return  
  146.      */  
  147.     public static Integer[] getIntegerArray4Json(String jsonString) {   
  148.   
  149.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  150.         Integer[] integerArray = new Integer[jsonArray.size()];   
  151.         for (int i = 0; i < jsonArray.size(); i++) {   
  152.             integerArray[i] = jsonArray.getInt(i);   
  153.   
  154.         }   
  155.         return integerArray;   
  156.     }   
  157.   
  158.     /**  
  159.      * 从json数组中解析出java Date 型对象数组,使用本方法必须保证  
  160.      *   
  161.      * @param jsonString  
  162.      * @return  
  163.      * @throws ParseException  
  164.      */  
  165.     public static Date[] getDateArray4Json(String jsonString, String DataFormat)   
  166.             throws ParseException {   
  167.   
  168.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  169.         Date[] dateArray = new Date[jsonArray.size()];   
  170.         String dateString;   
  171.         Date date;   
  172.   
  173.         for (int i = 0; i < jsonArray.size(); i++) {   
  174.             dateString = jsonArray.getString(i);   
  175.             date = DateUtil.parseDate(dateString, DataFormat);   
  176.             dateArray[i] = date;   
  177.   
  178.         }   
  179.         return dateArray;   
  180.     }   
  181.   
  182.   
  183.     /**  
  184.      * 从json数组中解析出java Integer型对象数组  
  185.      *   
  186.      * @param jsonString  
  187.      * @return  
  188.      */  
  189.     public static Double[] getDoubleArray4Json(String jsonString) {   
  190.   
  191.         JSONArray jsonArray = JSONArray.fromObject(jsonString);   
  192.         Double[] doubleArray = new Double[jsonArray.size()];   
  193.         for (int i = 0; i < jsonArray.size(); i++) {   
  194.             doubleArray[i] = jsonArray.getDouble(i);   
  195.   
  196.         }   
  197.         return doubleArray;   
  198.     }   
  199.   
  200.   
  201.     /**  
  202.      * 将java对象转换成json字符串  
  203.      *   
  204.      * @param javaObj  
  205.      * @return  
  206.      */  
  207.     public static String getJsonString4JavaPOJO(Object javaObj) {   
  208.   
  209.         JSONObject json;   
  210.         json = JSONObject.fromObject(javaObj);   
  211.         return json.toString();   
  212.   
  213.     }   
  214.   
  215.     /**  
  216.      * 将java对象转换成json字符串,并设定日期格式  
  217.      *   
  218.      * @param javaObj  
  219.      * @param dataFormat  
  220.      * @return  
  221.      */  
  222.     public static String getJsonString4JavaPOJO(Object javaObj,   
  223.             String dataFormat) {   
  224.   
  225.         JSONObject json;   
  226.         JsonConfig jsonConfig = configJson(dataFormat);   
  227.         json = JSONObject.fromObject(javaObj, jsonConfig);   
  228.         return json.toString();   
  229.   
  230.     }   
  231.   
  232.     /**  
  233.      * JSON 时间解析器具  
  234.      *   
  235.      * @param datePattern  
  236.      * @return  
  237.      */  
  238.     public static JsonConfig configJson(String datePattern) {   
  239.         JsonConfig jsonConfig = new JsonConfig();   
  240.         jsonConfig.setExcludes(new String[] { "" });   
  241.         jsonConfig.setIgnoreDefaultExcludes(false);   
  242.         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);   
  243.         jsonConfig.registerJsonValueProcessor(Date.class,   
  244.                 new JsonDateValueProcessor(datePattern));   
  245.   
  246.         return jsonConfig;   
  247.     }   
  248.   
  249.   
  250.     /**  
  251.      * 除去不想生成的字段(特别适合去掉级联的对象)+时间转换  
  252.      * @param excludes 除去不想生成的字段  
  253.      * @param datePattern  
  254.      * @return  
  255.      */  
  256.     public static JsonConfig configJson(String[] excludes, String datePattern) {   
  257.         JsonConfig jsonConfig = new JsonConfig();   
  258.         jsonConfig.setExcludes(excludes);   
  259.         jsonConfig.setIgnoreDefaultExcludes(true);   
  260.         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);   
  261.         jsonConfig.registerJsonValueProcessor(Date.class,   
  262.                 new JsonDateValueProcessor(datePattern));   
  263.   
  264.         return jsonConfig;   
  265.     }   
  266.   
  267. }  
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;
	}

}

 

Java代码 复制代码
  1. package com.baiyyy.polabs.util.json;   
  2.   
  3. import java.text.SimpleDateFormat;   
  4. import java.util.Date;   
  5.   
  6. import net.sf.json.JsonConfig;   
  7. import net.sf.json.processors.JsonValueProcessor;   
  8.   
  9. /**  
  10.  *   
  11.  * @author yongtree  
  12.  * @date 2008-11-22 上午10:54:19  
  13.  * @version 1.0  
  14.  */  
  15. public class JsonDateValueProcessor implements JsonValueProcessor {      
  16.          
  17.     private String format = "yyyy-MM-dd HH:mm:ss";      
  18.      
  19.     public JsonDateValueProcessor() {      
  20.      
  21.     }      
  22.      
  23.     public JsonDateValueProcessor(String format) {      
  24.         this.format = format;      
  25.     }      
  26.      
  27.     public Object processArrayValue(Object value, JsonConfig jsonConfig) {      
  28.         String[] obj = {};      
  29.         if (value instanceof Date[]) {      
  30.             SimpleDateFormat sf = new SimpleDateFormat(format);      
  31.             Date[] dates = (Date[]) value;      
  32.             obj = new String[dates.length];      
  33.             for (int i = 0; i < dates.length; i++) {      
  34.                 obj[i] = sf.format(dates[i]);      
  35.             }      
  36.         }      
  37.         return obj;      
  38.     }      
  39.      
  40.     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {      
  41.         if (value instanceof Date) {      
  42.             String str = new SimpleDateFormat(format).format((Date) value);      
  43.             return str;      
  44.         }      
  45.         return value == null ? null : value.toString();      
  46.     }      
  47.      
  48.     public String getFormat() {      
  49.         return format;      
  50.     }      
  51.      
  52.     public void setFormat(String format) {      
  53.         this.format = format;      
  54.     }      
  55.      
  56. }    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值