一个java处理JSON格式数据的通用类
进入需要在项目中用java处理json格式的数据,因此封装了一个class,现将这个class共享出来和大家分享/*** Copyright (c) linkwise 2007-2009 corporation.
* All rights reserved*/packagecom.linghui.common.util;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importnet.sf.json.JsonConfig;importnet.sf.json.util.CycleDetectionStrategy;importcom.linghui.common.util.DateUtil;importcom.linghui.common.util.jsonutil.DateJsonValueProcessor;/***@authorrobert.feng
**/publicclassJsonUtil {/*** 从一个JSON 对象字符格式中得到一个java对象
*@paramjsonString
*@parampojoCalss
*@return*/publicstaticObject getObject4JsonString(String jsonString,Class pojoCalss){
Object pojo;
JSONObject jsonObject=JSONObject.fromObject( jsonString );
pojo=JSONObject.toBean(jsonObject,pojoCalss);returnpojo;
}/*** 从json HASH表达式中获取一个map,改map支持嵌套功能
*@paramjsonString
*@return*/publicstaticMap getMap4Json(String jsonString){
JSONObject jsonObject=JSONObject.fromObject( jsonString );
Iterator keyIter=jsonObject.keys();
String key;
Object value;
Map valueMap=newHashMap();while( keyIter.hasNext())
{
key=(String)keyIter.next();
value=jsonObject.get(key);
valueMap.put(key, value);
}returnvalueMap;
}/*** 从json数组中得到相应java数组
*@paramjsonString
*@return*/publicstaticObject[] getObjectArray4Json(String jsonString){
JSONArray jsonArray=JSONArray.fromObject(jsonString);returnjsonArray.toArray();
}/*** 从json对象集合表达式中得到一个java对象列表
*@paramjsonString
*@parampojoClass
*@return*/publicstaticList getList4Json(String jsonString, Class pojoClass){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
JSONObject jsonObject;
Object pojoValue;
List list=newArrayList();for(inti=0; i
jsonObject=jsonArray.getJSONObject(i);
pojoValue=JSONObject.toBean(jsonObject,pojoClass);
list.add(pojoValue);
}returnlist;
}/*** 从json数组中解析出java字符串数组
*@paramjsonString
*@return*/publicstaticString[] getStringArray4Json(String jsonString){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
String[] stringArray=newString[jsonArray.size()];for(inti=0; i
stringArray[i]=jsonArray.getString(i);
}returnstringArray;
}/*** 从json数组中解析出javaLong型对象数组
*@paramjsonString
*@return*/publicstaticLong[] getLongArray4Json(String jsonString){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
Long[] longArray=newLong[jsonArray.size()];for(inti=0; i
longArray[i]=jsonArray.getLong(i);
}returnlongArray;
}/*** 从json数组中解析出java Integer型对象数组
*@paramjsonString
*@return*/publicstaticInteger[] getIntegerArray4Json(String jsonString){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
Integer[] integerArray=newInteger[jsonArray.size()];for(inti=0; i
integerArray[i]=jsonArray.getInt(i);
}returnintegerArray;
}/*** 从json数组中解析出java Date 型对象数组,使用本方法必须保证
*@paramjsonString
*@return*/publicstaticDate[] getDateArray4Json(String jsonString,String DataFormat){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
Date[] dateArray=newDate[jsonArray.size()];
String dateString;
Date date;for(inti=0; i
dateString=jsonArray.getString(i);
date=DateUtil.stringToDate(dateString, DataFormat);
dateArray[i]=date;
}returndateArray;
}/*** 从json数组中解析出java Integer型对象数组
*@paramjsonString
*@return*/publicstaticDouble[] getDoubleArray4Json(String jsonString){
JSONArray jsonArray=JSONArray.fromObject(jsonString);
Double[] doubleArray=newDouble[jsonArray.size()];for(inti=0; i
doubleArray[i]=jsonArray.getDouble(i);
}returndoubleArray;
}/*** 将java对象转换成json字符串
*@paramjavaObj
*@return*/publicstaticString getJsonString4JavaPOJO(Object javaObj){
JSONObject json;
json=JSONObject.fromObject(javaObj);returnjson.toString();
}/*** 将java对象转换成json字符串,并设定日期格式
*@paramjavaObj
*@paramdataFormat
*@return*/publicstaticString getJsonString4JavaPOJO(Object javaObj , String dataFormat){
JSONObject json;
JsonConfig jsonConfig=configJson(dataFormat);
json=JSONObject.fromObject(javaObj,jsonConfig);returnjson.toString();
}/***@paramargs*/publicstaticvoidmain(String[] args) {//TODO 自动生成方法存根}/*** JSON 时间解析器具
*@paramdatePattern
*@return*/publicstaticJsonConfig configJson(String datePattern) {
JsonConfig jsonConfig=newJsonConfig();
jsonConfig.setExcludes(newString[]{""});
jsonConfig.setIgnoreDefaultExcludes(false);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Date.class,newDateJsonValueProcessor(datePattern));returnjsonConfig;
}/***@paramexcludes
*@paramdatePattern
*@return*/publicstaticJsonConfig configJson(String[] excludes, String datePattern) {
JsonConfig jsonConfig=newJsonConfig();
jsonConfig.setExcludes(excludes);
jsonConfig.setIgnoreDefaultExcludes(false);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Date.class,newDateJsonValueProcessor(datePattern));returnjsonConfig;
}
}/*** linkwise*/packagecom.linghui.common.util.jsonutil;importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importnet.sf.json.JsonConfig;importnet.sf.json.processors.JsonValueProcessor;/***@authorrobert.feng
**/publicclassDateJsonValueProcessorimplementsJsonValueProcessor {publicstaticfinalString DEFAULT_DATE_PATTERN="yyyy-MM-dd";privateDateFormat dateFormat;/*** 构造方法.
*@paramdatePattern 日期格式*/publicDateJsonValueProcessor(String datePattern) {if(null==datePattern )
dateFormat=newSimpleDateFormat(DEFAULT_DATE_PATTERN);elsedateFormat=newSimpleDateFormat(datePattern);
}/*(非 Javadoc)
* @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang.Object, net.sf.json.JsonConfig)*/publicObject processArrayValue(Object arg0, JsonConfig arg1) {//TODO 自动生成方法存根returnprocess(arg0);
}/*(非 Javadoc)
* @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang.String, java.lang.Object, net.sf.json.JsonConfig)*/publicObject processObjectValue(String arg0, Object arg1, JsonConfig arg2) {//TODO 自动生成方法存根returnprocess(arg1);
}privateObject process(Object value) {returndateFormat.format((Date) value);
}
}