Статьи

Обработка JSON 1.1: 100DaysOfJavaEE8

JSON Pointer Challenge

Учитывая документ JSON во фрагменте кода ниже, каков результат использования функции JSON Pointer из JSON-P 1.1?

Новая форма объекта JSON будет выглядеть следующим образом:

1
2
3
4
5
6
7
8
{
 "name": "Duke",
 "likes": [
    "Java EE 8",
    "Java",
    "Ice Cream"
 ]
}

Что такое JSON Pointer?

JSON Pointer — это новая функция, которую вы найдете в JSON Processing 1.1 API, и она обновляется с помощью новейших стандартов IEFT JSON Pointer . Этот обновленный API является частью выпуска Java EE 8.

Итак, что такое указатель JSON? Хорошо, указатель JSON определяет строковое выражение, которое определяет конкретное значение в документе JSON. Это похоже на XPointer , который используется для идентификации фрагментов в XML-документе.

Указатель JSON в действии?

Давайте посмотрим на пример. Учитывая приведенный ниже документ JSON, первый элемент в массиве likes будет указан с помощью выражения указателя JSON: / likes / 0 .

1
2
3
4
5
6
7
{
 "name": "Duke",
 "likes": [
    "Java",
    "Coffee"
 ]
}

Это относится к значению элемента: Java .

Как использовать JSON Pointer?

API ввода — это интерфейс JsonPointer . Экземпляр создается путем вызова статического фабричного метода createPointer () класса Json . Фрагмент кода ниже создает JsonPointer и ссылается на второй элемент в массиве likes :

1
JsonPointer pointer = Json.createPointer("/likes/0");

API-интерфейс JsonPointer также может изменять документ JSON, добавляя, заменяя и удаляя свойства. Приведенный ниже фрагмент кода добавляет значение «Java EE 8» в список « Нравится» :

1
pointer.add(jsonObject, Json.createValue("Java EE 8"));

и код в следующем фрагменте заменяет значение в третьей позиции индекса:

1
2
pointer = Json.createPointer("/likes/2");
JsonObject newJsonObject = pointer.replace(jsonObject, Json.createValue("Ice Cream"));

Собрав все это вместе, вы получите код, который добавляет элемент массива likes и заменяет элемент. Полный фрагмент кода выглядит следующим образом:

1
2
3
4
5
6
7
JsonObject jsonObject =
    Json.createReader(new StringReader(target)).readObject();
JsonPointer pointer = Json.createPointer("/likes/0");
jsonObject = pointer.add(jsonObject, Json.createValue("Java EE 8"));
pointer = Json.createPointer("/likes/2");
JsonObject newJsonObject =
    pointer.replace(jsonObject, Json.createValue("Ice Cream"));

Выход из этого кода:

1
2
3
4
5
6
7
8
{
 "name": "Duke",
 "likes": [
    "Java EE 8",
    "Java",
    "Ice Cream"
 ]
}

Дальнейшее чтение

Для получения дополнительной информации о том, как использовать новые функции JSON Processing, ознакомьтесь с моей статьей « Что нового в Java EE 8» на IBM developerWorks, а также ознакомьтесь со спецификациями Java API для JSON Processing 1.1 ( JSR 374 ).

GitHub Repository

Код из этого и всех других # 100DaysOfJavaEE8 можно найти в моем репозитории GitHub .

Оригинальный твит

Опубликовано на Java Code Geeks с разрешения Алекса Тидома, партнера нашей программы JCG. Смотрите оригинальную статью здесь: JSON Processing 1.1: 100DaysOfJavaEE8

Мнения, высказанные участниками Java Code Geeks, являются их собственными.