问题
My JsonArray is
[{
"Id": null,
"Name": "One New task",
"StartDate": "2010-02-03T05:30:00",
"EndDate": "2010-02-04T05:30:00",
"Duration": 1,
"DurationUnit": "d",
"PercentDone": 0,
"ManuallyScheduled": false,
"Priority": 1,
"parentId": 8,
"index": 0,
"depth": 3,
"checked": null },{
"Id": null,
"Name": "New task",
"StartDate": "2010-02-04T05:30:00",
"EndDate": "2010-02-04T05:30:00",
"Duration": 0,
"DurationUnit": "d",
"PercentDone": 0,
"ManuallyScheduled": false,
"Priority": 1,
"parentId": 8,
"index": 1,
"depth": 3,
"checked": null }]
Now from this JsonArray I want to remove Id, ManuallyScheduled, checked,
I tried using jsonArray.remove(1)
and also jsonArray.discard("Id")
in JAVA.
but nothing happens. what am I doing wrong to remove array items?
I am using JAVA as my technology.
回答1:
What you have there is an array of objects. Therefore you'll have to loop through the array and remove the necessary data from each object, e.g.
for (int i = 0, len = jsonArr.length(); i < len; i++) {
JSONObject obj = jsonArr.getJSONObject(i);
// Do your removals
obj.remove("id");
// etc.
}
I've assumed you're using org.json.JSONObject
and org.json.JSONArray
here, but the principal remains the same whatever JSON processing library you're using.
If you wanted to convert something like [{"id":215},{"id":216}]
to [215,216]
you could so something like:
JSONArray intArr = new JSONArray();
for (int i = 0, len = objArr.length(); i < len; i++) {
intArr.put(objArr.getJSONObject(i).getInt("id"));
}
回答2:
This is useful sometimes in android when you want to use the json structure directly.
Notice that I only use this when I'm handling JSONObject inside the array.
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;
}
回答3:
The following method will find the object in an array
with the matching id
, then return the filtered array.
public JSONArray removeObject(JSONArray array, String id) throws JSONException {
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
if (obj.getString("ID").equals(id)) {
array.remove(i);
// Toast.makeText(this, "ENCONTRADO", Toast.LENGTH_SHORT).show();
}
}
return array;
}
来源:https://stackoverflow.com/questions/8740377/how-to-remove-jsonarray-element-using-java