user4550432
user4550432

Reputation:

Replace JSONObject in JSONObject

private JSONObject insertJSONintoJSON(JSONObject newJSON, JSONObject parent)
{
    Object[] a = parent.values().toArray();
    JSONObject jsonObject2 = (JSONObject) a[1];
    Object[] b = jsonObject2.values().toArray();
    JSONObject folders = (JSONObject) b[2];

    Object[] c = folders.values().toArray();
    JSONArray folderss = (JSONArray) c[2];

    for (Object objc : folderss)
    {
        JSONObject tmp = (JSONObject) objc;
        Object[] d = tmp.values().toArray();
        String name = (String) d[4];

        if (name.toUpperCase().equals("EXCHANGE"))
        {
            tmp = newJSON;
            return parent;
        }
    }

    return parent;
}

Hi, I want to return the parent with the new Value(newJSON), but the parent doesn't have it in, tmp doesn't change the value.

Upvotes: 2

Views: 2833

Answers (1)

zvikachu
zvikachu

Reputation: 279

Well you could try handling it as a String and simply inserting your new object in the parent.

    private static JSONObject insertObj(JSONObject parent, JSONObject child){
    String parentStr = parent.toString();
    parentStr = parentStr.substring(1);//remove the opening curly bracket {
    String childStr = child.toString();
    childStr = childStr.substring(0, (childStr.length()-1));
    parentStr = childStr+","+parentStr;
    JSONObject resultObj = new JSONObject(parentStr);
    return resultObj;
}

this will only work if you already have at-least 1 key inside the parent before adding the child object (because we are adding a comma) but you can take care of that with a simple IF

EDIT: Actually a much better way would be

JSONObject parent = new JSONObject();
JSONObject child = new JSONObject();
parent.put("object name",child);

Upvotes: 1

Related Questions