В этой главе мы расскажем, как использовать JSON в языке Java.

Выбор библиотеки

В Java отсутствует встроенный парсинг JSON, поэтому для использования JSON требуется сторонняя библиотека.

Ниже приведены несколько часто используемых библиотек для парсинга JSON:

  • Gson: библиотека JSON, разработанная Google, с очень полным функционалом.
  • FastJson: библиотека JSON, разработанная Alibaba, с отличной производительностью.
  • Jackson: сообщество очень активное, а обновления выходят очень быстро.

Следующий урок основан на FastJson.

Настройка окружения

В проекте, собранном с помощью Maven, просто добавьте следующую зависимость в файл pom.xml.

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>

Кодирование и декодирование

Кодирование

Процесс кодирования из переменных Java в формат JSON выглядит следующим образом:

Пример

public void testJson() { JSONObject object = new JSONObject(); //string object.put("string","string"); //int object.put("int",2); //boolean object.put("boolean",true); //array List<Integer> integers = Arrays.asList(1,2,3); object.put("list",integers); //null object.put("null",null); ​ System.out.println(object); }

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

Результат вывода следующий:

{"boolean":true,"string":"string","list":[1,2,3],"int":2}

Декодирование

Процесс декодирования из объектов JSON в переменные Java выглядит следующим образом:

Пример

public void testJson2() { ​ JSONObject object = JSONObject .parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}"); //string String s = object.getString("string"); System.out.println(s); //int int i = object.getIntValue("int"); System.out.println(i); //boolean boolean b = object.getBooleanValue("boolean"); System.out.println(b); //list List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class); integers.forEach(System.out::println); //null System.out.println(object.getString("null")); ​ }

В приведённом выше примере сначала создаётся объект JSON из строки в формате JSON, затем по порядку считываются строка, целое число, логическое значение и массив, и в конце они выводятся по отдельности. Результат вывода выглядит следующим образом:

string
2
true
1
2
3
null

Преобразование между объектами JSON и строками

МетодОписание
JSON.parseObject()Разбор объекта JSON из строки
JSON.parseArray()Разбор массива JSON из строки
JSON.toJSONString(obj/array)Преобразование объекта JSON или массива JSON в строку

Пример

//Разобрать объект JSON из строки JSONObject obj = JSON.parseObject("{\"example\":\"Example\"}"); //Разобрать массив JSON из строки JSONArray arr = JSON.parseArray("[\"Example\",\"EXAMPLE\"]\n"); //Преобразовать объект JSON в строку String objStr = JSON.toJSONString(obj); //Преобразовать массив JSON в строку String arrStr = JSON.toJSONString(arr);

Связанные руководства