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.
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"));
}
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;
}
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With