6

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.

3 Answers 3

9

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"));
}
Sign up to request clarification or add additional context in comments.

9 Comments

Glad to hear it :-) You could always extend JSONArray and add a removeData(String... keys) method or something similar if this was something you wanted to do regularly.
one more question to you.. How can i just pass the value to JSONArray in java. like I am having jsonArray of form [{"id":215},{"id":216}] but i want to convert my jsonArray to [215,216] is there any way to do so ?? how can i achieve this.
You could do this manually, I'll update my answer to show how to do this.
Hi I am having the same problem I am receiving the date in format of 2012-01-30T00:00:00 so how can I assign it to my Date variable startDate in JAVA pojo class.
I should think you'll have to use .getString("date") and then manually parse the String into a Date using something like SimpleDateFormat.
|
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;
}

2 Comments

Why add to a list<> and not directly add to a new JSONArray?
yes, you can do that. I have the unoptimized version because I already had the method asList for convenience.
2

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;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.