Пример работы с Json Simple в Java: парсинг и создание JSON

Пример работы с Json Simple в Java: парсинг и создание JSON

Этой статьей я начну серию публикаций по работе с JSON в Java. Для начала пройдусь по знакомым и простым решениям, а затем перейду к продвинутым библиотекам. Примером «простых решений» сегодня будет работа с Json Simple, а именно парсинг (разбор) существующего JSON объекта и создание нового.

Обзор Json Simple API

Json Simple — представляет собой простой API для обработки JSON. Сам API состоит из около 13 классов, основу которых составляют следующие 5 классов:

  1. Класс JSONParser предназначен для разбора строки с JSON-содержимым. Он принимает объект java.io.Reader или строку.
  2. Класс JSONObject — это Java представление JSON строки. Класс JSONObject наследует HashMap и хранит пары ключ — значение. Также у него есть очень полезный метод writeJSONString(Map map, Writer out), который используется для конвертации мапы в JSON строку.
  3. Класс JSONArray представляет собой коллекцию. Он наследует ArrayList и реализует интерфейсы JSONAware и JSONStreamAware.
  4. JSONValue — класс для парсинга JSON строки в Java объекты. Для этого он использует класс JSONParser. JSONValue содержит множество полезных методов для создания JSON из различных типов, например, метод writeJSONString(Object value, Writer out) создаст JSON-строку из Java объекта. Он также имеет методы для работы со специальными (управляющими) символами используя метод escape(String s). С помощью этого метода можно безопасно работать с кавычками «» и такими символами, как \f, \t, \n, \, /, \r, \b и многими другими.
  5. Интерфейс JSONAware. Класс должен реализовывать этот интерфейс, чтобы конвертироваться в JSON формат.

Json Simple API. Пример разбора JSON строки и создания нового JSON объекта

Ниже описан пример парсинга строки с JSON содержимым, а именно текущей погоды в каком-то городе. Я использовал сервис Openweathermap.org для получения данных о погоде.

Если Вы хотите просто попробовать JSON Simple API в действии и не хотите заморачиваться над получением этих данных с какого-то сервиса, то просто скопируйте полученный JSON по этой ссылке: openweather и используйте его в виде обычной строки в Java.

Создание maven проекта

Для удобства я создал простой maven проект в Intellij IDEA и добавил в зависимости последнюю версию json-simple в файле pom.xml:

Теперь перейдем к созданию класса JsonUtils, в котором будут все необходимые методы для парсинга готового json в виде строки и создания нового Json содержимого.

Теперь создадим Main класс для работы с утилитным методом парсинга и создания json:

В ходе работы с Json Simple API по этому примеру у Вас могут возникнуть такие сложности:

  • Если запрос на погодный сервис не проходит, то замените API ключ, который используется в примере, на свой.
  • Если у Вас проблема с maven проектом, то можно создать простой Java проект и добавить вручную jar библиотеку Json Simple.

Теперь запустим приложение и посмотрим на результат выполнения в консоль:

В этой статье мы познакомились с простым способом парсинга/создания json, а в следующих статьях Вас ждут другие более удобные и популярные способы обработки json.

Скачать проект можно по этой ссылке.

Подписывайтесь на обновления и следите за новыми статьями!

 

5 Комментарии “Пример работы с Json Simple в Java: парсинг и создание JSON

  1. Спасибо за статью! Но у вас опущен самый важный момент. Вы харткодите ссылку для запроса погоды, и не показываете как сформировать эту ссылку из json строки.
    Мне интересен именно такой порядок:
    1. Сформировать URL на основе JSON
    2. Получить ответ от сервера и разобрать его.
    А у вас получается первый пункт пропущен.

    1. Здравствуйте, Дмитрий!
      Вы можете сформировать ссылку с помощью класса URIBuilder. Указать эндпоинт и параметры запроса. Посмотреть другие параметры для запроса можно в документации openweathermap. Ниже я переписал формирование запроса с помощью URIBuilder:

  2. А каким обрахом достать из json текущую температуру?
    Попробовал на основе данных вариантов, но постоянно выдает ошибку.

Добавить комментарий для javadevbloger Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *