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, являются их собственными. |
