j.s.o.n工具

public static <T> List<T> convert2PafaDTOList(JSONArray jsonArray, Class<T> clazz){
List<T> dtoList = new ArrayList<T>();

if(null == jsonArray) return dtoList;

for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
dtoList.add(JSONObject.toJavaObject(jsonObj, clazz));
}
return dtoList;
}
/**
*
* <p> 将数组Json对象转换为字符类型列表 </p>
* <p>
* 修改者:EX-WANGYUFENG001 修改日期:2015年4月28日 下午3:50:43
* </p>
* @param jsonArray
* @return
* @since V1.0.0
*/
public static List<String> convert2StringList(JSONArray jsonArray){
List<String> dtoList = new ArrayList<String>();

if(null == jsonArray) return dtoList;

for (int i = 0; i < jsonArray.size(); i++) {
String jsonStr = jsonArray.getString(i);
dtoList.add(jsonStr);
}
return dtoList;
}

/**
*
* <p> 获取JsonObject中的指定属性值 </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-2-12 下午9:12:47
* </p>
* @param attrName 可以使用【.】嵌套获取对象属性值, 例如:a.b.c
* @param jsonObj
* @return
* @since V1.0.0
*/
public static String getNestJsonAttrStr(String attrName, JSONObject jsonObj){
if(StringUtils.isEmpty(attrName)) return StringUtils.EMPTY;
String[] attrNames = StringUtils.split(attrName, UMSConstants.DOT);

JSONObject oj = jsonObj;
for (int i = 0, len = attrNames.length; i < len; i++) {
if(null == oj) break;

if(i < len - 1) {
oj = oj.getJSONObject(attrNames[i]);
continue;
}

return oj.getString(attrNames[i]);
}
return StringUtils.EMPTY;
}

/**
*
* <p> 获取JsonObject中的指定属性值(可以包含数组标识),例如:aField.bField[1].cField </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-6-6 上午10:25:32
* </p>
* @param attrName
* @param jsonObj
* @return
* @since V1.0.0
*/
public static String getNestJsonAttrStrIncludeArray(String attrName, JSONObject jsonObj){
if(StringUtils.isEmpty(attrName)) return StringUtils.EMPTY;
String[] attrNames = StringUtils.split(attrName, UMSConstants.DOT);

JSONObject oj = jsonObj;
for (int i = 0, len = attrNames.length; i < len; i++) {
if(null == oj) break;

String curAttrName = attrNames[i];
String curFieldName = getAttrName(curAttrName);

if(i >= len - 1){
return getJsonAttrStrIncludeArray(oj, curAttrName, curFieldName);
}else{
oj = getJsonAttrIncludeArray(oj, curAttrName, curFieldName);
}
}
return StringUtils.EMPTY;
}

/**
*
* <p> 获取JsonObject中的指定属性值(可以包含数组标识),例如:aField.bField[1].cField </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-7-12 下午6:58:05
* </p>
* @param attrName
* @param jsonObj
* @return
* @since V1.0.0
*/
public static JSONObject getNestJsonAttrObjIncludeArray(String attrName, JSONObject jsonObj){
if(StringUtils.isEmpty(attrName)) return null;
String[] attrNames = StringUtils.split(attrName, UMSConstants.DOT);

JSONObject oj = jsonObj;
for (int i = 0, len = attrNames.length; i < len; i++) {
if(null == oj) break;

String curAttrName = attrNames[i];
String curFieldName = getAttrName(curAttrName);

if(i >= len - 1){
return getJsonAttrObjIncludeArray(oj, curAttrName, curFieldName);
}else{
oj = getJsonAttrIncludeArray(oj, curAttrName, curFieldName);
}
}
return null;
}

private static String getJsonAttrStrIncludeArray(JSONObject oj, String curAttrName, String curFieldName){
if(!isArrayAttrName(curAttrName)){
return oj.getString(curFieldName);
}

int arrIdx = getArrayAttrIndex(curAttrName);
JSONArray objectArr = oj.getJSONArray(curFieldName);
if(null == objectArr
|| arrIdx >= objectArr.size()){
return StringUtils.EMPTY;
}

return objectArr.getString(arrIdx);
}
private static JSONObject getJsonAttrObjIncludeArray(JSONObject oj, String curAttrName, String curFieldName){
if(!isArrayAttrName(curAttrName)){
return oj.getJSONObject(curFieldName);
}

int arrIdx = getArrayAttrIndex(curAttrName);
JSONArray objectArr = oj.getJSONArray(curFieldName);
if(null == objectArr
|| arrIdx >= objectArr.size()){
return null;
}

return objectArr.getJSONObject(arrIdx);
}
private static JSONObject getJsonAttrIncludeArray(JSONObject oj, String curAttrName, String curFieldName){
if(!isArrayAttrName(curAttrName)){
return oj.getJSONObject(curFieldName);
}

int arrIdx = getArrayAttrIndex(curAttrName);
JSONArray objectArr = oj.getJSONArray(curFieldName);
if(null == objectArr
|| arrIdx >= objectArr.size()){
return null;
}

return objectArr.getJSONObject(arrIdx);
}

private static boolean isArrayAttrName(String attrName){
return StringUtils.indexOf(attrName, ARRAY_FLAG_BEGIN) > -1
&& StringUtils.indexOf(attrName, ARRAY_FLAG_END) > -1;
}
private static int getArrayAttrIndex(String attrName){
String arrIdxStr = StringUtils.substringBetween(attrName, ARRAY_FLAG_BEGIN, ARRAY_FLAG_END);
if(!StringUtils.isNumeric(arrIdxStr)) throw new RuntimeException("属性中数组索引配置有误【" + attrName + "】");

return Integer.valueOf(arrIdxStr).intValue();
}
private static String getAttrName(String attrName){
if(StringUtils.contains(attrName, ARRAY_FLAG_BEGIN)){
return StringUtils.substringBefore(attrName, ARRAY_FLAG_BEGIN);
}else{
return attrName;
}
}

/**
*
* <p> 获取JsonObject中的指定属性值 </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-2-10 下午8:49:54
* </p>
* @param jsonObj
* @return
* @since V1.0.0
*/
public static String getJsonAttrStr(String attrName, JSONObject jsonObj){
return (null != jsonObj) ? jsonObj.getString(attrName) : StringUtils.EMPTY;
}
/**
*
* <p> 获取JsonObject中指定属性性 </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-2-11 下午7:58:35
* </p>
* @param attrName
* @param jsonObj
* @return
* @since V1.0.0
*/
public static JSONObject getJsonAttrObj(String attrName, JSONObject jsonObj){
return (null != jsonObj) ? jsonObj.getJSONObject(attrName) : null;
}
/**
*
* <p> 获取JsonObject中的指定的JsonArray类型属性 </p>
* <p>
* 修改者:WANGHAIXIANG716 修改日期:2014-4-21 下午3:13:25
* </p>
* @param attrName 可以使用【.】嵌套获取对象属性值, 例如:a.b.c
* @param jsonObj
* @return
* @since V1.0.0
*/
public static JSONArray getNestJsonArrayAttr(String attrName, JSONObject jsonObj){
if(StringUtils.isEmpty(attrName)) return null;
String[] attrNames = StringUtils.split(attrName, UMSConstants.DOT);

JSONObject oj = jsonObj;
for (int i = 0, len = attrNames.length; i < len; i++) {
if(null == oj) return null;

if(i < len - 1) {
oj = oj.getJSONObject(attrNames[i]);
continue;
}

return oj.getJSONArray(attrNames[i]);
}
return null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值