j.s.o.n工具

publicstatic<T>List<T>convert2PafaDTOList(JSONArrayjsonArray,Class<T>clazz){

List<T>dtoList=newArrayList<T>();

if(null==jsonArray)returndtoList;

for(inti=0;i<jsonArray.size();i++){

JSONObjectjsonObj=jsonArray.getJSONObject(i);

dtoList.add(JSONObject.toJavaObject(jsonObj,clazz));

}

returndtoList;

}

/**

*

*<p>将数组Json对象转换为字符类型列表</p>

*<p>

*修改者:EX-WANGYUFENG001修改日期:2015年4月28日下午3:50:43

*</p>

*@paramjsonArray

*@return

*@sinceV1.0.0

*/

publicstaticList<String>convert2StringList(JSONArrayjsonArray){

List<String>dtoList=newArrayList<String>();

if(null==jsonArray)returndtoList;

for(inti=0;i<jsonArray.size();i++){

StringjsonStr=jsonArray.getString(i);

dtoList.add(jsonStr);

}

returndtoList;

}

/**

*

*<p>获取JsonObject中的指定属性值</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-2-12下午9:12:47

*</p>

*@paramattrName可以使用【.】嵌套获取对象属性值,例如:a.b.c

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticStringgetNestJsonAttrStr(StringattrName,JSONObjectjsonObj){

if(StringUtils.isEmpty(attrName))returnStringUtils.EMPTY;

String[]attrNames=StringUtils.split(attrName,UMSConstants.DOT);

JSONObjectoj=jsonObj;

for(inti=0,len=attrNames.length;i<len;i++){

if(null==oj)break;

if(i<len-1){

oj=oj.getJSONObject(attrNames[i]);

continue;

}

returnoj.getString(attrNames[i]);

}

returnStringUtils.EMPTY;

}

/**

*

*<p>获取JsonObject中的指定属性值(可以包含数组标识),例如:aField.bField[1].cField</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-6-6上午10:25:32

*</p>

*@paramattrName

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticStringgetNestJsonAttrStrIncludeArray(StringattrName,JSONObjectjsonObj){

if(StringUtils.isEmpty(attrName))returnStringUtils.EMPTY;

String[]attrNames=StringUtils.split(attrName,UMSConstants.DOT);

JSONObjectoj=jsonObj;

for(inti=0,len=attrNames.length;i<len;i++){

if(null==oj)break;

StringcurAttrName=attrNames[i];

StringcurFieldName=getAttrName(curAttrName);

if(i>=len-1){

returngetJsonAttrStrIncludeArray(oj,curAttrName,curFieldName);

}else{

oj=getJsonAttrIncludeArray(oj,curAttrName,curFieldName);

}

}

returnStringUtils.EMPTY;

}

/**

*

*<p>获取JsonObject中的指定属性值(可以包含数组标识),例如:aField.bField[1].cField</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-7-12下午6:58:05

*</p>

*@paramattrName

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticJSONObjectgetNestJsonAttrObjIncludeArray(StringattrName,JSONObjectjsonObj){

if(StringUtils.isEmpty(attrName))returnnull;

String[]attrNames=StringUtils.split(attrName,UMSConstants.DOT);

JSONObjectoj=jsonObj;

for(inti=0,len=attrNames.length;i<len;i++){

if(null==oj)break;

StringcurAttrName=attrNames[i];

StringcurFieldName=getAttrName(curAttrName);

if(i>=len-1){

returngetJsonAttrObjIncludeArray(oj,curAttrName,curFieldName);

}else{

oj=getJsonAttrIncludeArray(oj,curAttrName,curFieldName);

}

}

returnnull;

}

privatestaticStringgetJsonAttrStrIncludeArray(JSONObjectoj,StringcurAttrName,StringcurFieldName){

if(!isArrayAttrName(curAttrName)){

returnoj.getString(curFieldName);

}

intarrIdx=getArrayAttrIndex(curAttrName);

JSONArrayobjectArr=oj.getJSONArray(curFieldName);

if(null==objectArr

||arrIdx>=objectArr.size()){

returnStringUtils.EMPTY;

}

returnobjectArr.getString(arrIdx);

}

privatestaticJSONObjectgetJsonAttrObjIncludeArray(JSONObjectoj,StringcurAttrName,StringcurFieldName){

if(!isArrayAttrName(curAttrName)){

returnoj.getJSONObject(curFieldName);

}

intarrIdx=getArrayAttrIndex(curAttrName);

JSONArrayobjectArr=oj.getJSONArray(curFieldName);

if(null==objectArr

||arrIdx>=objectArr.size()){

returnnull;

}

returnobjectArr.getJSONObject(arrIdx);

}

privatestaticJSONObjectgetJsonAttrIncludeArray(JSONObjectoj,StringcurAttrName,StringcurFieldName){

if(!isArrayAttrName(curAttrName)){

returnoj.getJSONObject(curFieldName);

}

intarrIdx=getArrayAttrIndex(curAttrName);

JSONArrayobjectArr=oj.getJSONArray(curFieldName);

if(null==objectArr

||arrIdx>=objectArr.size()){

returnnull;

}

returnobjectArr.getJSONObject(arrIdx);

}

privatestaticbooleanisArrayAttrName(StringattrName){

returnStringUtils.indexOf(attrName,ARRAY_FLAG_BEGIN)>-1

&&StringUtils.indexOf(attrName,ARRAY_FLAG_END)>-1;

}

privatestaticintgetArrayAttrIndex(StringattrName){

StringarrIdxStr=StringUtils.substringBetween(attrName,ARRAY_FLAG_BEGIN,ARRAY_FLAG_END);

if(!StringUtils.isNumeric(arrIdxStr))thrownewRuntimeException("属性中数组索引配置有误【"+attrName+"】");

returnInteger.valueOf(arrIdxStr).intValue();

}

privatestaticStringgetAttrName(StringattrName){

if(StringUtils.contains(attrName,ARRAY_FLAG_BEGIN)){

returnStringUtils.substringBefore(attrName,ARRAY_FLAG_BEGIN);

}else{

returnattrName;

}

}

/**

*

*<p>获取JsonObject中的指定属性值</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-2-10下午8:49:54

*</p>

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticStringgetJsonAttrStr(StringattrName,JSONObjectjsonObj){

return(null!=jsonObj)?jsonObj.getString(attrName):StringUtils.EMPTY;

}

/**

*

*<p>获取JsonObject中指定属性性</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-2-11下午7:58:35

*</p>

*@paramattrName

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticJSONObjectgetJsonAttrObj(StringattrName,JSONObjectjsonObj){

return(null!=jsonObj)?jsonObj.getJSONObject(attrName):null;

}

/**

*

*<p>获取JsonObject中的指定的JsonArray类型属性</p>

*<p>

*修改者:WANGHAIXIANG716修改日期:2014-4-21下午3:13:25

*</p>

*@paramattrName可以使用【.】嵌套获取对象属性值,例如:a.b.c

*@paramjsonObj

*@return

*@sinceV1.0.0

*/

publicstaticJSONArraygetNestJsonArrayAttr(StringattrName,JSONObjectjsonObj){

if(StringUtils.isEmpty(attrName))returnnull;

String[]attrNames=StringUtils.split(attrName,UMSConstants.DOT);

JSONObjectoj=jsonObj;

for(inti=0,len=attrNames.length;i<len;i++){

if(null==oj)returnnull;

if(i<len-1){

oj=oj.getJSONObject(attrNames[i]);

continue;

}

returnoj.getJSONArray(attrNames[i]);

}

returnnull;

}

相关推荐