Как создать объект JSON с ключом и значением, где значение является массивом

1

Мне нужно сделать объект JSON с ключом и значением, где значение является массивом значений. Как я мог это сделать?

{"propName" : "favouriteObjectsIds", 
 "value": [
        "5c93f4cc3a6565000483248d",
        "5c93f7843a6565000483248e"
        ] 
}

Я пробовал вот так

public void add(String propertyName, String[] values){
        JsonArray array1 = new JsonArray();
        for(int i = 0; i < values.length; i++){
            array.add(values[i]);
        }

        JsonObject json = new JsonObject();
        json.addProperty("propName", propertyName);
        json.addProperty("value" ,array.toString());
    }

но array.toString() дает мне такой вывод

{"propName":"favouriteObjectsIds",
"value":"[\"5c93f4cc3a6565000483248d\",\"5c9b82ad24b33b0004227322\"]"}
Теги:
arrays

3 ответа

1
Лучший ответ

Вы должны использовать .add вместо .addProperty для JsonElements

public void add(String propertyName, String[] values){

    JsonArray array = new JsonArray();
    for(int i = 0; i < values.length; i++){
        array.add(values[i]);
    }

    JsonObject json = new JsonObject();
    json.addProperty("propName", propertyName);
    json.add("value" ,array);
}
  • 1
    спасибо, сработало! глупая ошибка; D
0

Все приведенные выше примеры создают два свойства, каждое из которых имеет ключ (имя) и значение. Первый ключ свойства - это "propName" со значением "favouriteObjectsIds", второй ключ - это "значение" со значением "[" 5c93f4cc3a6565000483248d "," 5c93f7843a6565000483248e "]"

Я подозреваю, что вы бы предпочли это:

{"favouriteObjectsIds": [
    "5c93f4cc3a6565000483248d",
    "5c93f7843a6565000483248e"
    ] 
}

Если это правда, вы можете сделать это следующим образом:

String myJson = "{\"favouriteObjectsIds\":[\"5c93f4cc3a6565000483248d\",\"5c93f7843a6565000483248e\"]}"; 

JSONObject jObject = new JSONObject(myJson );
  • 0
    нет, дело не в этом Мне нужен такой формат JSON, потому что мой остальные API принимает такой метод для патча, но спасибо за ответ.
0

вы можете создать свой JSON с ArrayList, как это:

public void add(String propertyName,ArrayList<String> list){

        Map map = new LinkedHashMap();
        map.put("propName", propertyName);
        map.put("value", list);


         JSONObject jObject = new JSONObject(map);
     //  convert JSONObject to JSON to String
         String  json = jObject.toString();

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню