Как удалить JSONObject из формирования в этом примере

#java #json

#java #json

Вопрос:

Я создаю JSON динамически, используя org.json

Это результат, который я получаю в настоящее время

 {
    "item": {
        "T1": [
            {
                "name": "101",
                "T2": {
                    "leaf": [
                        {
                            "jsonkey": "jsonval"
                        }
                    ]
                }
            }
        ]
    }
}
  

Мне нужно, чтобы выходные данные были в этом формате

(Удален дополнительный T2 JSONObject)

 {
    "item": {
        "T1": [
            {
                "name": "101",
                "leaf": [
                    {
                        "jsonkey": "jsonval"
                    }
                ]
            }
        ]
    }
}
  

Это вся моя программа

    public static void main(String[] args) throws JSONException {
        Map<String,LinkedList<JSONObject>> vendorOrdersMap = new LinkedHashMap<String,LinkedList<JSONObject>>();
        JSONObject jsonobj = new JSONObject();
        jsonobj.put("jsonkey", "jsonval");
        LinkedList<JSONObject> listjson = new LinkedList<JSONObject>();
        listjson.add(jsonobj);
        vendorOrdersMap.put("101", listjson);
        JSONObject sai = new JSONObject();
        JSONArray T1Array = new JSONArray();
        for (Map.Entry<String, LinkedList<JSONObject>> entry : vendorOrdersMap.entrySet())
        {
            String key = entry.getKey();
            LinkedList<JSONObject> t1ChildList = entry.getValue();
            JSONArray jsonarray = new JSONArray();
            for(JSONObject t2ColumnData : t1ChildList)
            {
                jsonarray.put(t2ColumnData);
                JSONObject lemon = new JSONObject().put("leaf", jsonarray);
                JSONObject soft = new JSONObject().put("name", key).put("T2", lemon);
                T1Array.put(soft);
            }
            JSONObject softDrink = new JSONObject().put("T1", T1Array);
            sai.put("item", softDrink);
        }
        System.out.println(sai);
    }
  

Если я удалю это

 JSONObject soft = new JSONObject().put("name", key).put("T2", lemon);
  

я не могу добавить данные.

Ответ №1:

Это должно сработать, если вы измените самый внутренний for цикл на что-то вроде

 jsonarray.put(t2ColumnData);
JSONObject soft = new JSONObject().put("name", key).put("leaf", jsonarray);
T1Array.put(soft);
  

потому что вы хотите сохранить name часть и заменить T2 часть только ее дочерним элементом.

Комментарии:

1. Это именно то, что мне было нужно, большое вам спасибо, я боролся с этим ранее.