2015-07-01 3 views
1
[ 
    { 
     "key":"key1", 
     "value":"key one value", 
     "description":"" 
    }, 
    { 
     "key":"key2", 
     "value":"key two value", 
     "description":"" 
    }, 
    { 
     "key":"key3", 
     "value":"key three value", 
     "description":"" 
    }, 
    { 
     "key":"key4", 
     "value":"key four value", 
     "description":"" 
    }, 
    { 
     "key":"key5", 
     "value":"key five value", 
     "description":"" 
    } 
] 

Это выше мой пример файла JSON я работаю, я помещаю его в JsonArray как этотизменения JSon элементов в javax.json.JsonArray

BufferedReader reader = Files.newBufferedReader(file, 
       Charset.defaultCharset()); 
JsonReader jsonReader = Json.createReader(reader); 
JsonArray array = jsonReader.readArray(); 

и мои проблема заключается в том, что я хочу получить доступ к JsonArray и изменить часть значения каждого элемента json, но не могу этого сделать. , похоже, коллекция не предлагает никаких изменений для замены значений любого json-элемента. Знаете ли вы, что я мог бы достичь того, что я собираюсь делать? PS: также открыта для предложений по использованию альтернативной коллекции, но, пожалуйста, просветите меня, почему я должен выбрать указанную коллекцию.

ответ

1

Поскольку вы не упомянули, которые JSON библиотеки вы используете, вы можете использовать element метод, если вы используете JSON-Lib, чтобы заменить элемент

public JSONArray element(int index, 
         Object value) 

Если вы хотите обновить конкретный атрибут JSONObject элемент, вы можете попробовать что-то вроде ниже

array.getJSONObject(0).put("key","new key value") 

Обратите внимание, что я использовал жестко закодированное значение 0 для демонстрационных целей.

+0

Это 'javax.json'. –

+0

Хорошо, в этом случае JSONArray неизменен. Вам нужно будет прочитать каждый отдельный JSONObject из массива и каким-то образом преобразовать его в JSONObjectBuilder, а затем упаковать в новый массив с помощью JSONArrayBuilder. Можно ли использовать какую-то другую библиотеку JSON, такую ​​как Jackson, которая позволяет лучше привязываться к Java POJO? –

+0

Я мог бы использовать некоторую другую библиотеку JSON, но, похоже, их много, и у меня нет подсказки, на что можно пойти. Можете ли вы дать мне рекомендацию, по которой я должен использовать и максимально упростить этот способ? – Gugg

Смежные вопросы