轉(zhuǎn)載
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的工具類,負(fù)責(zé)json數(shù)據(jù)轉(zhuǎn)換成java對(duì)象和java對(duì)象轉(zhuǎn)換成json
*
* @author yongtree
* @date 2008-11-22 上午10:47:13
* @version 1.0
*/
public class JsonUtil {
/**
* 從一個(gè)JSON 對(duì)象字符格式中得到一個(gè)java對(duì)象
*
* @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表達(dá)式中獲取一個(gè)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數(shù)組中得到相應(yīng)java數(shù)組
*
* @param jsonString
* @return
*/
public static Object[] getObjectArray4Json(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
return jsonArray.toArray();
}
/**
* 從json對(duì)象集合表達(dá)式中得到一個(gè)java對(duì)象列表
*
* @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數(shù)組中解析出java字符串?dāng)?shù)組
*
* @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數(shù)組中解析出javaLong型對(duì)象數(shù)組
*
* @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數(shù)組中解析出java Integer型對(duì)象數(shù)組
*
* @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數(shù)組中解析出java Date 型對(duì)象數(shù)組,使用本方法必須保證
*
* @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數(shù)組中解析出java Integer型對(duì)象數(shù)組
*
* @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對(duì)象轉(zhuǎn)換成json字符串
*
* @param javaObj
* @return
*/
public static String getJsonString4JavaPOJO(Object javaObj) {
JSONObject json;
json = JSONObject.fromObject(javaObj);
return json.toString();
}
/**
* 將java對(duì)象轉(zhuǎn)換成json字符串,并設(shè)定日期格式
*
* @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 時(shí)間解析器具
*
* @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;
}
/**
* 除去不想生成的字段(特別適合去掉級(jí)聯(lián)的對(duì)象)+時(shí)間轉(zhuǎn)換
* @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;
}
}
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/cyjchao/archive/2009/07/31/4397894.aspx