java-slide

Полезности Java — json-simple

В этот раз затронем очень интересную для меня тему - язык Java. Мне нравится данный объектно-ориентированный язык программирования, мне нравится писать на нем программы. Это очень приятный инструмент, который появился примерно в 1995 году с целью стать простым, но очень мощным кроссплатформенным языком программирования. Написав однажды программы - вы сможете запустить ее на любом устройстве (если, конечно, на нем есть специальная виртуальная машина, которая выполняет ваш код).

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

Те, кто хоть когда-нибудь разрабатывал сетевое приложение, писал свой простенький сетевой протокол, возможно, сталкивался с тем, что передавать данные в виде примитивов - задача не самая приятная. Хотя Java очень упрощает данный процесс и в некоторых случаях передача простого int'a или строки - решит проблему. Но когда мы гоняем более крупные информационные блоки, уже хочется более удобный инструмент для "архивации" данных, а точнее для сериализации объектов.

Такую возможность предоставляет специальные форматы данных, которые были изобретены именно для этого. Существует два крупных инструмента для этой задачи: XML и JSON. Что точно это такое, вы можете найти в сети. Мы же поговорим о более прикладных вещах. В стандартных библиотеках Java имеется поддержка формата XML - то есть вы спокойно можете работать с этим форматом данных "из под коробки". Но, как на мой взгляд, во многих случаях XML менее удобен, поэтому появился совсем простой формат - JSON, который основан на JavaScript. По факту - это обычный набор строк, которые особым образом устроены и структурированы для удобного парсинга данных.

В своих проектах я часто использую именно JSON, как я выше уже написал, но пока в стандартных библиотеках данный формат в Java не поддерживается. Поэтому приходится использовать сторонние библиотеки, про одну из которых я сейчас расскажу. Json-simple - библиотека, которую, на данный момент, я чаще всего использую. Из названия - она простая, она про JSON - то что нам нужно.

Библиотека представляет из себя один .jar файл, который легко подключается к проекту (в Eclipse подключается просто: Project - Properties - Java Build Path - Add JARs / Add External JARs). После подключения можно сразу приступать к работе. Что нас интересует - это сохранение данных в JSON и чтения данных из JSON. Вот так выглядит типичный JSON объект:

С этим примером и будем работать. Допустим, эти данные находятся в файле example.json. Я лишь приведу несколько методов для работы с библиотекой для чтения и создания JSON строк.

Начнем с десериализации, с парсинга. Так выглядит чтение из файла JSON данных и создания объекта для работы  с этими данными:

В итоге мы получаем объект resultJson библиотечного класса JSONObject, в котором и лежат вся информация.  Как видно из вышенаписанного кода, данный объект создается с помощью объекта класса JSONParser - через автоматический парсер. Все, теперь можно вытаскивать информацию, либо снова приводить объект resultJson к строке (с помощью метода toString() ) и передавать его, например, по сети. Доступ к данным прост, работает с явным приведением типов, поскольку метод get() возвращает Object. Выглядит следующим образом:

Теперь посмотрим обратный процесс - создание JSON структуры:

Как видно, используется по сути только метод put(). В итоге получается следующая вещь:

Этого функционала достаточно для большинства простых прикладных задач, так что пользуйтесь! Скачать библиотеку можно с официальной страницы проекты: https://code.google.com/p/json-simple/

Добавить комментарий

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">