java.lang.NoSuchMethodError: org.json.JSONArray.remove

java.lang.NoSuchMethodError: org.json.JSONArray.remove
996.icu

问题:

使用JSONArray时候,出现这个错误的原因是JSONArray.remove 是因为JSONArray的remove方法是在API 19之后才加入的SDK中。

解决方案:
1.获取SDK版本,根据版本号,做出不同的逻辑处理。
if ( Build.VERSION.SDK_INT<19){
jsonArray= JsonUtil.removeFromJsonArray(jsonArray,i);
}else {
jsonArray.remove(i);
}

2.当SDK版本小于19时候,手动书写jsonArray的remove操作
removeFromJsonArray()方法

/**
* 删除给定index中jsonArray中的元素
* @param jsonArray 被操作的jsonArray
* @param index 要被删除位置
* @return 被处理过的jsonArray
*/
public static JSONArray removeFromJsonArray(JSONArray jsonArray,int index) throws JSONException {
JSONArray mJsonArray=new JSONArray();
if (index<0){
Log.d(TAG,“传入的数据不能为负数”);
return mJsonArray;
}else if (index>jsonArray.length()){
Log.d(TAG,“传入索引大于json数组长度”);
return mJsonArray;
}
for (int i= 0;i<index;i++){
mJsonArray.put(jsonArray.getJSONObject(i));
}
int tempSize=jsonArray.length();
for (int n=index+1;n<tempSize;n++){
mJsonArray.put(jsonArray.getJSONObject(n));
}
return mJsonArray;
}

PS:删除从开始position到结束position
/***
* 删除给定index中jsonArray中的元素
* @param jsonArray 被操作的jsonArray
* @param from 开始位置
* @param to 结束位置
* @return 被处理过的jsonArray
* @throws JSONException
*/
public static JSONArray removeFromJsonArray(JSONArray jsonArray,int from,int to) throws JSONException {
JSONArray mJsonArray=new JSONArray();
if (from<0||to<0){
LogUtil.d(TAG,“传入的数据不能为负数”);
return mJsonArray;
}else if (to<from){
LogUtil.d(TAG,“左边索引不能大于右边索引”);
return mJsonArray;
}else if (to>jsonArray.length()){
LogUtil.d(TAG,“传入索引大于json数组长度”);
return mJsonArray;
}
for (int i= 0;i<from;i++){
mJsonArray.put(jsonArray.getJSONObject(i));
}
int tempSize=jsonArray.length();
for (int n=to+1;n<tempSize;n++){
mJsonArray.put(jsonArray.getJSONObject(n));
}
return mJsonArray;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值