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