当前位置: 代码迷 >> JavaScript >> java处置JSON格式数据的通用类-分享
  详细解决方案

java处置JSON格式数据的通用类-分享

热度:384   发布时间:2012-12-22 12:05:07.0
java处理JSON格式数据的通用类-分享

/**
?*?Copyright?(c)?linkwise?2007-2009?corporation.??
?*?All?rights?reserved
?
*/

package?com.linghui.common.util;

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;

import?com.linghui.common.util.DateUtil;
import?com.linghui.common.util.jsonutil.DateJsonValueProcessor;

/**
?*?
@author?</br>?<a?href="mailto:fx19800215@163.com">?robert.feng</a>
?*
?
*/

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
?????
*/

????
public?static?Date[]?getDateArray4Json(String?jsonString,String?DataFormat){
????????
????????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.stringToDate(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();
????????
????????
????}

????
????
????
????
/**
?????*?
@param?args
?????
*/

????
public?static?void?main(String[]?args)?{
????????
//?TODO?自动生成方法存根

????}

????
????
/**
?????*?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?DateJsonValueProcessor(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(
false);???
????????????jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);???
????????????jsonConfig.registerJsonValueProcessor(Date.
class,???
????????????????
new?DateJsonValueProcessor(datePattern));???
??????????
????????????
return?jsonConfig;???
????????}
??

}

/**
?*?linkwise
?
*/

package?com.linghui.common.util.jsonutil;

import?java.text.DateFormat;
import?java.text.SimpleDateFormat;
import?java.util.Date;

import?net.sf.json.JsonConfig;
import?net.sf.json.processors.JsonValueProcessor;



/**
?*??
@author?</br>?<a?href="mailto:fx19800215@163.com">?robert.feng</a>
?*
?
*/

public?class?DateJsonValueProcessor?implements?JsonValueProcessor?{

????
<img
  相关解决方案