Добавляется дополнительная квадратная скобка при накоплении массива json в объекте json

Пожалуйста, объясните мне, почему я получаю дополнительную квадратную скобку при сохранении массива json в объекте json

Используемая версия json: json-20140107.jar

    JSONObject jsonObj = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    jsonArray.put("value");
    jsonObj.accumulate("A", jsonArray);
    System.out.println(" jsonObj " + jsonObj);

выход:

jsonObj {"A":[["value"]]}

старое поведение:

jsonObj {"A":["value"]}

1 ответ

Потому что метод реализован для переноса значения в другой массив, если он уже один:

public JSONObject accumulate(String key, Object value) throws JSONException {
    testValidity(value);
    Object object = this.opt(key);
    if (object == null) {
        this.put(key,
                value instanceof JSONArray ? new JSONArray().put(value)
                        : value);
    } else if (object instanceof JSONArray) {
        ((JSONArray) object).put(value);
    } else {
        this.put(key, new JSONArray().put(object).put(value));
    }
    return this;
}
Другие вопросы по тегам