Konversi JSON ke XML Java menggunakan Gson dan JAXB dengan Contoh
Apa itu JSON?
JSON adalah singkatan dari Javascript Object Notation, yang merupakan bentuk data yang mengikuti aturan tertentu bahwa sebagian besar bahasa pemrograman saat ini dapat dibaca. Kita dapat dengan mudah menyimpannya ke dalam file atau record di database. Format JSON menggunakan pasangan nilai kunci untuk mendeskripsikan data.
Dalam contoh berikut, kami mendefinisikan string JSON yang menyimpan informasi pribadi:
Jadi sintaks JSON sangat sederhana. Setiap informasi data akan memiliki dua bagian:kunci dan nilai yang sesuai dengan nama bidang dan nilainya dalam catatan tertentu. Namun jika dilihat lebih jauh, ada beberapa hal seperti ini:
String JSON diapit oleh kurung kurawal {}.
Kunci dan nilai JSON harus diapit dengan tanda kutip {“}.
Jika ada lebih banyak data (lebih banyak pasangan kunci => nilai), kami menggunakan koma (,) untuk memisahkan.
Kunci JSON harus berupa huruf atau angka tanpa tanda, _, dan tanpa spasi, karakter pertama tidak boleh disetel ke angka.
Dalam tutorial ini, Anda akan belajar-
Apa itu JSON?
Apa itu XML?
Apa itu Gson?
Apa itu JAXB?
Bagaimana cara mengonversi XML ke JSON?
Konversi pesan XML ke objek Java menggunakan JAXB
Mengonversi objek Java ke pesan JSON menggunakan Gson
Konversi pesan JSON ke objek Java menggunakan Gson
Mengonversi objek Java ke pesan XML menggunakan JAXB
Apa itu XML?
XML adalah singkatan dari eXtensible Markup Language juga disebut bahasa markup yang dapat diperluas yang diusulkan oleh World Wide Web Consortium (https://www.w3.org/) untuk membuat bahasa markup lainnya. Ini adalah subset sederhana yang dapat menjelaskan berbagai jenis data, sehingga sangat berguna dalam berbagi data antar sistem.
Tag dalam XML sering kali tidak ditentukan sebelumnya, tetapi dibuat sesuai dengan konvensi pengguna. XML memperkenalkan fitur baru berdasarkan keunggulan HTML.
Ada beberapa fitur pembuatan XML yang lebih berguna dalam beragam sistem dan solusi:
XML dapat diperluas:XML memungkinkan Anda membuat tag khusus sendiri agar sesuai dengan aplikasi Anda.
XML membawa data, bukan menampilkannya:XML memungkinkan Anda menyimpan data terlepas dari bagaimana data itu akan ditampilkan.
XML adalah standar umum:XML dikembangkan oleh World Wide Web Consortium (W3C) dan tersedia sebagai standar terbuka.
XML dibangun di atas struktur simpul bersarang. Setiap node akan memiliki tag pembuka dan tag penutup sebagai berikut:
<node>content</node>
Di mana:
adalah tag terbuka, nama tag ini ditentukan oleh Anda.
adalah tag tertutup, nama tag ini harus sama dengan nama tag terbuka.
konten adalah isi dari tag ini.
Di bagian atas setiap file XML, Anda harus mendeklarasikan tag untuk menunjukkan versi XML yang digunakan. Sintaks dari tag instruksi:
Gson (https://github.com/google/gson) adalah pustaka java yang memungkinkan pengguna untuk mengonversi dari objek Java ke string JSON dan juga mengonversi dari string JSON ke objek Java. Gson dapat bekerja dengan objek Java arbitrer termasuk objek yang sudah ada tanpa Anda memiliki kode sumbernya.
Sejak versi 1.6, Gson memperkenalkan dua kelas baru – JsonReader dan JsonWriter untuk menyediakan pemrosesan streaming pada data JSON.
JsonWriter – Streaming tulis ke JSON. Sintaks untuk implementasi umum adalah sebagai berikut. Kami membuat JsonWriter obyek. Untuk memulai dan menyelesaikan pembuatan string JSON, kami menggunakan fungsi beginObject() dan endObject(). Di tengah menjalankan dua fungsi ini, kami melakukan penulisan data dengan pasangan (kunci => nilai).
JsonWriter writer = new JsonWriter();
writer.beginObject();
writer.name("key").value("value");
writer.endObject();
JsonReader – Streaming membaca dari JSON. Sintaks untuk implementasi umum adalah sebagai berikut. Kami membuat objek JsonReader. Untuk memulai dan menyelesaikan pembuatan string JSON, kita menggunakan fungsi beginObject() dan endObject(). Di tengah menjalankan dua fungsi ini, kami melakukan pembacaan data dengan pasangan (kunci => nilai).
JsonReader reader = new JsonReader();
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("key")) {
String value = reader.nextString();
}
}
reader.endObject();
Pemrosesan streaming Gson cepat. Namun Anda perlu menangani setiap pasangan (kunci => nilai) dari pemrosesan data JSON.
Apa itu JAXB?
JAXB adalah singkatan dari Java Architecture for XML Binding, yang merupakan library yang menggunakan anotasi untuk mengonversi objek Java ke konten XML dan sebaliknya. Karena JAXB didefinisikan melalui spesifikasi, kita dapat menggunakan implementasi yang berbeda untuk standar ini.
Dengan JAXB, kami sering menggunakan anotasi dasar berikut, yaitu:
@XmlRootElement :Anotasi ini menentukan tag terluar dari file XML dan oleh karena itu dideklarasikan di atas kelas.
@XmlElementWrapper :Anotasi ini membuat elemen XML pembungkus di sekitar koleksi.
@XmlElement :Anotasi ini digunakan untuk menyatakan atribut objek adalah tag dari file XML.
@XmlAttribute :Anotasi ini juga digunakan untuk mendeklarasikan atribut objek sebagai tag dari file XML.
Sintaks untuk implementasi umum adalah sebagai berikut. Pertama, kita akan menginisialisasi JAXBContext objek dengan MyObject objek untuk dikonversi.
Kami memanggil kode di atas di kelas XmlToJsonService .
XMLService xmlService = new XMLService();
XMLModel xmlModel = xmlService.getObjectFromXmlFile(filePathIn);
Department department = xmlModel.getDepartment();
List<Role> roles = department.getRoles();
List<Person> persons = department.getPersons();
Kemudian kita lanjutkan ke langkah berikutnya.
Konversi objek Java ke pesan JSON menggunakan Gson
Pada langkah ini, kita mendefinisikan fungsi writeDataToJsonFile untuk menulis data ke file JSON. Fungsi ini didefinisikan di kelas JsonService .
Perhatikan bahwa untuk menulis daftar string JSON, kami menggunakan fungsi beginArray() dan endArray() . Di antara dua fungsi ini, kami menulis setiap string JSON.
public void writeDataToJsonFile(String filePath, List<Role> roles, List<Person> persons) {
try {
JsonWriter writer = new JsonWriter(new FileWriter(filePath));
writer.setIndent(" ");
writer.beginObject();
writer.name("roles");
writer.beginArray();
for (Role role : roles) {
writer.beginObject();
writer.name("id").value(role.getId());
writer.name("position").value(role.getPosition());
writer.name("salary").value(role.getSalary());
writer.name("persons");
writer.beginArray();
for (Person person : persons) {
if (person.getRole().equalsIgnoreCase(role.getId())) {
writer.beginObject();
writer.name("id").value(person.getId());
writer.name("name").value(person.getName());
writer.endObject();
}
}
writer.endArray();
writer.endObject();
}
writer.endArray();
writer.endObject();
writer.close();
} catch (IOException e) {
}
}
Kami memanggil kode di atas di kelas XmlToJsonService .
JsonService jsonService = new JsonService();
jsonService.writeDataToJsonFile(filePathOut, roles, persons);
Itu proses pertama.
Konversi pesan JSON ke objek Java menggunakan Gson
Pada langkah pertama dari proses kedua, kita mendefinisikan fungsi getDataFromJsonFile untuk membaca data dari file JSON. Fungsi ini didefinisikan di kelas JsonService .
Perhatikan bahwa untuk membaca daftar string JSON, kami menggunakan fungsi beginArray() dan endArray() . Di antara dua fungsi ini, kita membaca setiap string JSON.
public void getDataFromJsonFile(String filePath, List<Role> roles, List<Person> persons) {
try {
JsonReader reader = new JsonReader(new FileReader(filePath));
reader.beginObject();
while (reader.hasNext()) {
String nameRoot = reader.nextName();
if (nameRoot.equals("roles")) {
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
Role role = new Role();
while (reader.hasNext()) {
String nameRole = reader.nextName();
if (nameRole.equals("id")) {
role.setId(reader.nextString());
} else if (nameRole.equals("position"))
{ role.setPosition(reader.nextString());
} else if (nameRole.equals("salary")) {
role.setSalary(reader.nextString());
} else if (nameRole.equals("persons")) {
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
Person person = new Person();
person.setRole(role.getId());
while (reader.hasNext()) {
String namePerson = reader.nextName();
if (namePerson.equals("id")) {
person.setId(reader.nextString());
} else if (namePerson.equals("name")) {
person.setName(reader.nextString());
}
}
persons.add(person);
reader.endObject();
}
reader.endArray();
}
}
roles.add(role);
reader.endObject();
}
reader.endArray();
}
}
reader.endObject();
reader.close();
} catch (IOException e) {
}
}
Kami memanggil kode di atas di kelas XmlToJsonService .
JsonService jsonService = new JsonService();
List<Role> roles = new ArrayList<>();
List<Person> persons = new ArrayList<>();
jsonService.getDataFromJsonFile(filePathIn, roles, persons);
Bagaimana Mengonversi Json ke XML Java?
JSON ke XML di JAVA dikonversi dengan menggunakan JSONObject json =new JSONObject(str); String xml =XML . Jika Anda memiliki file dtd atau file xml yang valid, maka sangat mudah untuk mengubah json ke xml dan juga xml ke json.
Kemudian kita lanjutkan ke langkah berikutnya.
Konversi objek Java ke pesan XML menggunakan JAXB
Pada langkah ini, kami menggunakan teknik Marshalling dari JAXB.
Marshalling menyediakan aplikasi klien kemampuan untuk mengubah pohon objek Java turunan JAXB menjadi data XML.
Kami mendefinisikan fungsi parseObjectToXm untuk menyusun objek Java ke pesan XML. Fungsi ini didefinisikan di kelas
Kami memanggil kode di atas di kelas XmlToJsonService .
XMLService xmlService = new XMLService();
XMLModel xmlModel = new XMLModel();
Department department = new Department();
department.setRoles(roles);
department.setPersons(persons);
xmlModel.setDepartment(department);
xmlService.parseObjectToXml(filePathOut, xmlModel);
Itu proses kedua.
Kesimpulan
Dalam tutorial ini, kita mempelajari secara singkat satu cara di mana JAXB dapat membaca data XML dan Gson menulisnya ke JSON. Sebaliknya, kami juga melihat cara Gson membaca data JSON dan JAXB menulisnya ke XML.