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;
}