Поместите карту Java в JSON

1

У меня есть карта строковых объектов и ключей, которые я хочу поместить в json файл. Я прочитал, что способ сделать это - преобразовать его в массив, и он работает только с картами, где оба объекта и ключ являются строками. Я могу создать JSONObject с карты отлично, но не могу поместить это в массив. Может ли кто-нибудь сказать мне, почему это не работает?

private static final String JSON_USER_VOTES = "user_votes";
private Map<String, String> mCheckedPostsMap; //This is populated elsewhere


JSONObject obj=new JSONObject(mCheckedPostsMap);
JSONArray array=new JSONArray(obj.toString()); // <<< Error is on this line
json.put(JSON_USER_VOTES, array);

Вот ошибка:

org.json.JSONException: Value {"232":"true","294":"true"} of type org.json.JSONObject cannot be converted to JSONArray
Теги:
map

1 ответ

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

Если вы хотите, чтобы все начальные записи карт были включены в один объект JSON, вы можете использовать:

JSONArray array = new JSONArray().put(obj);

Это создаст нечто вроде [{"key1:"value1","key2":"value2"}]

Если вы хотите, чтобы каждая из исходных записей в карманах представляла собой отдельный объект JSON, вы можете использовать:

JSONObject obj = new JSONObject(map); JSONArray array = new JSONArray(); for(Iterator iter = obj.keys(); iter.hasNext(); ){ String key = (String)iter.next(); JSONObject o = new JSONObject().put(key, map.get(key)); array.put(o); }

Это создаст нечто вроде [{"key1:"value1"}, {"key2":"value2"}]

  • 0
    Спасибо, чувак, это именно то, что я искал.

Ещё вопросы

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