Вземете стойност по ключ в JSONArray

1. Общ преглед

JSON е лек и независим от езика формат за обмен на данни, използван за повечето комуникации клиент-сървър.

JSONObject и JSONArray са двата често срещани класа, обикновено достъпни в повечето от JSON обработващите библиотеки. А JSON обектите съхранява неподредени двойки ключ-стойност , подобно на Java Карта изпълнение. А JSONArray , от друга страна, е подредена последователност от стойности, който много прилича на Списък или Vector в Java.

В този урок ще използваме библиотека JSON-Java ( org.json ) и ще научим как да обработваме JSONArray за извличане на стойност за даден ключ. Ако е необходимо, имаме достъп до тази библиотека.

2. Зависимост на Maven

Първо ще започнем с добавяне на зависимостта по-долу в нашия POM:

 org.json json 20180813 

Винаги можем да открием най-новата версия на JSON-Java в Maven Central.

3. Натрупване на контекст

JSON съобщението обикновено се състои от JSON обекти и масиви, които могат да бъдат вложени един в друг. А JSONArray обект е затворена в квадратни скоби [] докато JSON обектите е затворена в фигурни скоби {} . Например, нека разгледаме това съобщение JSON:

[ { "name": "John", "city": "chicago", "age": "22" }, { "name": "Gary", "city": "florida", "age": "35" }, { "name": "Selena", "city": "vegas", "age": "18" } ]

Ясно е, че това е масив от JSON обекти. Всеки JSON обект в този масив представлява нашия клиентски запис, като име, възраст и град като негови атрибути или ключове.

4. Обработка на JSONArray

Предвид горния JSON, какво, ако искаме да разберем имената на всички наши клиенти? С други думи, даден ключ, „име“ в нашия пример, как можем да намерим всички стойности, съпоставени с този ключ в даден JSON масив?

Както знаем, JSONArray е списък на JSON обекти. И така, нека намерим всички стойности за даден ключ:

public List getValuesForGivenKey(String jsonArrayStr, String key) { JSONArray jsonArray = new JSONArray(jsonArrayStr); return IntStream.range(0, jsonArray.length()) .mapToObj(index -> ((JSONObject)jsonArray.get(index)).optString(key)) .collect(Collectors.toList()); }

В предишния пример:

  • Първо, итерираме целия списък с обекти в JSON масив
  • След това за всеки JSONObject получаваме стойността, съпоставена с дадения ключ

Също така методът optString () връща празен низ, ако такъв ключ не съществува.

При извикване на getValuesForGivenKey (jsonArrayStr, “name”), където jsonArrayStr е нашият пример JSON, ще получим Списък на всички имена като изход:

[John, Gary, Selena]

5. Заключение

В тази бърза статия научихме как да анализираме JSONArray, за да получим всички картографирани стойности за даден ключ. Тук използвахме библиотека JSON-Java (org.json) .

JSON.simple е още една подобна и мощна алтернатива за работа с JSON в Java. Моля, не се колебайте да разгледате.

Както обикновено, пълният изходен код е достъпен в Github.