java解析json通用_【转】一个java处理JSON格式数据的通用类

一个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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值