Ringkasan JSON Pointer

1. Ikhtisar

Dalam tutorial ini, kami akan menunjukkan cara menggunakan JSON Pointer untuk menavigasi dan mengambil informasi dari data JSON .

Kami juga akan menunjukkan cara melakukan operasi seperti memasukkan data baru atau memperbarui nilai kunci yang ada.

2. Pengaturan Ketergantungan

Pertama, kita perlu menambahkan beberapa dependensi ke pom.xml kita :

 org.glassfish javax.json 1.1.2 

3. Penunjuk JSON

JSON ("JavaScript Object Notation") adalah format ringan untuk bertukar data antar sistem, awalnya ditentukan oleh Douglas Crockford.

Meskipun menggunakan sintaks JavaScript , ia tidak bergantung pada bahasa, karena hasilnya adalah teks biasa .

JSON Pointer (RFC 6901) adalah fitur dari JSON Processing 1.1 API (JSR 374). Ini mendefinisikan String yang dapat digunakan untuk mengakses nilai pada dokumen JSON. Ini bisa terkait dengan apa yang dilakukan XPath untuk dokumen XML.

Melalui penggunaan JSON Pointer, kita dapat mengambil data dari dan mengubah file JSON.

4. Mengakses Data

Kita akan melihat beberapa contoh bagaimana melakukan operasi dengan mengimplementasikan kelas yang disebut JsonPointerCrud .

Misalkan kita memiliki file JSON bernama books.json dengan konten:

{ "library": "My Personal Library", "books": [ { "title":"Title 1", "author":"Jane Doe" }, { "title":"Title 2", "author":"John Doe" } ] }

Untuk mengakses data dari file itu, kita perlu membacanya dan menguraikannya ke JsonStructure . Kita bisa mencapainya menggunakan metode Json.createReader () , yang menerima InputStream atau FileReader .

Inilah cara kami melakukannya:

JsonReader reader = Json.createReader(new FileReader("books.json")); JsonStructure jsonStructure = reader.read(); reader.close();

Konten tersebut akan disimpan di objek JsonStructure . Ini adalah objek yang akan kita gunakan untuk melakukan operasi selanjutnya.

4.1. Ambil Data dari File

Untuk mengambil satu nilai kita membuat JsonPointer , memberi tahu tag mana kita ingin mendapatkan nilainya:

JsonPointer jsonPointer = Json.createPointer("/library"); JsonString jsonString = (JsonString) jsonPointer.getValue(jsonStructure); System.out.println(jsonString.getString());

Perhatikan bahwa karakter pertama String ini adalah ' /' - ini adalah persyaratan sintaksis .

Hasil cuplikan ini adalah:

My Personal Library

Untuk mengambil nilai dari daftar, kita perlu menentukan indeksnya (di mana indeks pertama adalah 0):

JsonPointer jsonPointer = Json.createPointer("/books/1"); JsonObject jsonObject = (JsonObject) jsonPointer.getValue(jsonStructure); System.out.println(jsonObject.toString());

Output ini:

"title":"Title 2", "author":"John Doe"

4.2. Periksa Jika Ada Kunci di File

Melalui metode berisiValue , kita dapat memeriksa apakah nilai yang digunakan untuk membuat penunjuk ada di file JSON:

JsonPointer jsonPointer = Json.createPointer("/library"); boolean found = jsonPointer.containsValue(jsonStructure); System.out.println(found); 

Hasil dari potongan ini adalah:

true

4.3. Sisipkan Nilai Kunci Baru

Jika kita perlu menambahkan nilai baru ke JSON, createValue yang akan menanganinya. Metode createValue kelebihan beban untuk menerima String , int , long , double , BigDecimal , dan BigInteger:

JsonPointer jsonPointer = Json.createPointer("/total"); JsonNumber jsonNumber = Json.createValue(2); jsonStructure = jsonPointer.add(jsonStructure, jsonNumber); System.out.println(jsonStructure);

Sekali lagi, keluaran kami adalah:

{ "library": "My Personal Library", "total": 2, "books": [ { "title":"Title 1", "author":"Jane Doe" }, { "title":"Title 2", "author":"John Doe" } ] }

4.4. Perbarui Nilai Kunci

Untuk memperbarui nilai, kita perlu membuat nilai baru terlebih dahulu . Setelah nilai dibuat, kami menggunakan metode replace dari pointer yang dibuat menggunakan parameter key:

JsonPointer jsonPointer = Json.createPointer("/total"); JsonNumber jsonNumberNewValue = Json.createValue(5); jsonStructure = jsonPointer.replace(jsonStructure, jsonNumberNewValue); System.out.println(jsonStructure);

Keluaran:

{ "library": "My Personal Library", "total": 5, "books": [ { "title":"Title 1", "author":"Jane Doe" }, { "title":"Title 2", "author":"John Doe" } ] }

4.5. Hapus Kunci

Untuk menghapus kunci, pertama-tama kita membuat penunjuk ke kunci tersebut. Kami kemudian menggunakan metode hapus:

JsonPointer jsonPointer = Json.createPointer("/library"); jsonPointer.getValue(jsonStructure); jsonStructure = jsonPointer.remove(jsonStructure); System.out.println(jsonStructure);

Yang menghasilkan:

{ "total": 5, "books": [ { "title":"Title 1", "author":"Jane Doe" }, { "title":"Title 2", "author":"John Doe" } ] }

4.6. Tunjukkan Isi Penuh File

Jika penunjuk dibuat dengan String kosong , seluruh konten diambil:

JsonPointer jsonPointer = Json.createPointer(""); JsonObject jsonObject = (JsonObject) jsonPointer.getValue(jsonStructure); System.out.println(jsonObject.toString());

Contoh kode ini akan menampilkan seluruh konten jsonStructure .

5. Kesimpulan

Dalam artikel singkat ini, kami telah membahas cara bekerja dengan JSON Pointer untuk melakukan berbagai operasi pada data JSON.

Dan, seperti biasa, kode yang terkait dengan tutorial ini berakhir di GitHub.