我开始构建一个使用平面文件存储的Android应用程序.该应用程序不存储超过六个记录,我熟悉JSON,所以我只写出一个JSONArray文件.
不过,我今天才发现Android JSON API不包含remove()选项.咦?我是否必须将数组转储到另一个集合中,删除它,然后重建JSONArray?重点是什么?
Raf*_*hes 19
当你想直接使用json结构而没有循环转换时,这在android中很有用.请仅在您执行诸如长按或类似行之类的操作时使用此功能.不要在循环内使用它!
请注意,我只在处理数组中的JSONObject时才使用它.
public static JSONArray remove(final int idx, final JSONArray from) {
final List<JSONObject> objs = asList(from);
objs.remove(idx);
final JSONArray ja = new JSONArray();
for (final JSONObject obj : objs) {
ja.put(obj);
}
return ja;
}
public static List<JSONObject> asList(final JSONArray ja) {
final int len = ja.length();
final ArrayList<JSONObject> result = new ArrayList<JSONObject>(len);
for (int i = 0; i < len; i++) {
final JSONObject obj = ja.optJSONObject(i);
if (obj != null) {
result.add(obj);
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
Fab*_*rra 11
我用:
public static JSONArray removeFrom(JSONArray jsonArray, int pos){
JSONArray result = new JSONArray();
try {
for (int i = 0; i < jsonArray.length(); i++) {
if (i != pos) {
jsonArray.put(jsonArray.get(i));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
重点是,JSONArray并且JSONObject意味着(de)将数据序列化为JSON,而不是操纵数据.一种remove()方法似乎有意义,但限制在哪里?您希望能够访问序列化对象的属性吗?访问或更新嵌套数据结构?
实际上,您的想法是"本机地"操纵数据结构.
小智 7
您可能想立即查看.看起来像Android(4.4)的API 19实际上允许这种方法.
Call requires API level 19 (current min is 16): org.json.JSONArray#remove
Run Code Online (Sandbox Code Playgroud)
我在尝试使用它时遇到了这个错误.希望它可以帮到你,现在它就在那里!
| 归档时间: |
|
| 查看次数: |
11764 次 |
| 最近记录: |