Как подключить json java
Ответы
Игорь Черкасов
08 декабря 2022
Для работы с форматом json нужно использовать сторонние библиотеки. Несколько из них указаны ниже:
Json Simple (MVN Repository)
Простой парсер.
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.util.Iterator;
public class JsonSimpleClass {
public static void main(String[] args) throws ParseException {
//JSON строка
String jsonString = "{\"name\": \"Max\", \"addresses\":"
+ "[{\"street\":\"Bolshaja\", \"house\":1},"
+ "{\"street\":\"Bolshaja\", \"house\":2}]}";
//Достаем один объект
Object obj = new JSONParser().parse(jsonString);
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
System.out.println("Имя: " + name);
//Достаем массив
JSONArray addresses = (JSONArray) jsonObject.get("addresses");
Iterator addressesIterator = addresses.iterator();
System.out.println("Адреса:");
//Выводим в цикле данные массива
while (addressesIterator.hasNext()) {
JSONObject joIterator = (JSONObject) addressesIterator.next();
System.out.println("Улица: " + joIterator.get("street")
+ ", Дом: " + joIterator.get("house"));
}
}
}
Вывод:
Имя: Max
Адреса:
Улица: Bolshaja, Дом: 1
Улица: Bolshaja, Дом: 2
GSON (MVN Repository)
Описание
Имеет все тоже, что и предыдущая библиотека, плюс можно создать модели данных для записи непосредственно в них. Например, имеем следующий Json:
{
"name" : "Max",
"age" : 25
}
создадим модель в виде класса
class Person {
public String name;
public int age;
//Переопределим метод toString для вывода данных
@Override
public String toString() {
return "name='" + name + '\'' +
", age=" + age;
}
}
для парсинга достаточно теперь использовать код:
import com.google.gson.Gson;
public class GsonClass {
public static void main(String[] args) {
String jsonString = "{\"name\": \"Max\", \"age\":25}";
//вот так коротко
Gson g = new Gson();
Person person = g.fromJson(jsonString, Person.class);
System.out.println(person);
}
}
Теперь в person лежит объект Person, в котором находятся данные с теми типами, которые были указаны в модели Person.
Вывод при запуске кода выше:
name='Max', age=25
Jackson (MVN Repository)
Документация
Умеет все тоже, что и предыдущий.
Пример парсинга по модели Person:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonClass {
public static void main(String[] args) throws JsonProcessingException {
String jsonString = "{\"name\": \"Max\", \"age\":30}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(jsonString, Person.class);
System.out.println(person);
}
}
Вывод:
name='Max', age=30
0
0