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.