Konversi JSON ke XML Java menggunakan Gson dan JAXB

โšก Ringkasan Cerdas

Konversi JSON ke XML Java menggunakan Gson dan JAXB melalui pemetaan.ping kedua format tersebut pada anotasi yang sama. Java Artikel ini mendefinisikan setiap format, menyiapkan proyek, menguraikan XML dengan JAXB, menulis JSON dengan Gson, dan membalikkan seluruh proses.

  • ๏ธ Struktur JSON: Data disimpan sebagai pasangan kunci dan nilai di dalam kurung kurawal, dengan koma sebagai pemisah antar setiap entri.
  • ๏ธ Struktur XML: Data disimpan dalam node bersarang, di mana setiap tag pembuka memerlukan tag penutup yang sesuai.
  • ๐Ÿ”— Model Bersama: Satu set yang diberi anotasi Java Kelas bertindak sebagai jembatan, sehingga tidak ada format yang diuraikan secara langsung ke format lainnya.
  • ๐Ÿ“ฅ Pembukaan kembali susunan pemain: JAXB membaca file XML dan mengembalikan data yang telah diisi. Java Pohon objek melalui kelas Unmarshaller.
  • ๐Ÿ“ค Streaming Write: Gson JsonWriter Menghasilkan JSON secara bertahap dengan panggilan beginObject, name, value, dan endObject.
  • ๐Ÿ”„ Reverse Path: JsonReader membangun kembali objek dari JSON, dan JAXB Marshaller menuliskannya kembali sebagai XML.
  • โš ๏ธ Catatan Saat Eksekusi: JAXB meninggalkan JDK pada Java 11, jadi dependensi jakarta.xml.bind harus ditambahkan secara eksplisit.

Konversi JSON ke XML di Java

Apa itu JSON?

JSON adalah singkatan dari JavaScript Object Notation (JSON), yaitu format data yang mengikuti aturan yang dapat dibaca oleh sebagian besar bahasa pemrograman. Kita dapat dengan mudah menyimpannya ke dalam file atau menyimpannya di dalam basis data. Format JSON menggunakan pasangan kunci-nilai untuk mendeskripsikan data.

Pada contoh berikut, kita mendefinisikan string JSON yang menyimpan informasi pribadi:

{
"username" : "guru99user",
"email" : "guru99user@mail.com"
}

Jadi, sintaks JSON sangat sederhana. Setiap item data memiliki dua bagian, kunci dan nilai, yang sesuai dengan nama field dan nilainya dalam sebuah record. Lebih lanjut, ada beberapa aturan seperti ini:

  • String JSON diapit oleh kurung kurawal {}.
  • Kunci JSON harus diapit oleh tanda kutip ganda, dan nilai string juga harus diapit oleh tanda kutip.
  • Jika terdapat lebih banyak data (lebih banyak pasangan kunci => nilai), kita menggunakan koma (,) untuk memisahkannya.
  • Kunci JSON harus menggunakan huruf, angka, atau karakter garis bawah (_) tanpa spasi, dan karakter pertama tidak boleh berupa angka.

Apa itu XML?

XML adalah singkatan dari eXtensible Markup Language, yang diusulkan oleh World Wide Web Consortium (https://www.w3.org/) untuk membuat bahasa markup lainnya. Ini adalah subset sederhana yang dapat menggambarkan berbagai jenis data, sehingga sangat berguna untuk berbagi data antar sistem.

Tag dalam XML seringkali tidak ditentukan sebelumnya, namun dibuat sesuai dengan konvensi pengguna. XML memperkenalkan fitur-fitur baru berdasarkan keunggulan HTML.

Terdapat beberapa fitur XML yang berguna untuk berbagai 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 tanpa memperhatikan bagaimana data tersebut akan ditampilkan.
  • XML adalah standar umum: XML dikembangkan oleh World Wide Web Consortium (W3C) dan tersedia sebagai standar terbuka.

XML dibangun di atas struktur node bersarang. Setiap node memiliki tag pembuka dan tag penutup sebagai berikut:

<node>content</node>

Di mana:

  • adalah tag terbuka, dan nama tag ini ditentukan oleh Anda.
  • adalah tag penutup, dan nama tag ini harus sesuai dengan nama tag pembuka.
  • Konten adalah isi dari tag ini.

Di bagian atas setiap file XML, Anda harus mendeklarasikan sebuah tag untuk menunjukkan versi XML yang digunakan. Sintaks tag instruksi adalah:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

JSON vs XML: Perbedaan Utama

Kedua format tersebut memuat data terstruktur, dan tabel di bawah ini menunjukkan mengapa sebuah proyek mungkin perlu berpindah antar format tersebut.

Parameter JSON XML
Gaya sintaksis Pasangan kunci dan nilai Tag bersarang
Tipe data String, angka, boolean, null, array, objek Hanya teks, tipe berasal dari skema.
atribut Tidak didukung Didukung pada elemen apa pun
komentar Tidak didukung Didukung
Verbositas Padat Lebih bertele-tele karena tag berulang.
Validasi skema Skema JSON, opsional DTD dan XSD, matang
Penggunaan khas API web dan konfigurasi Pesan dan dokumen perusahaan

Apa itu Gson?

Gson (https://github.com/google/gson) Adalah Java perpustakaan yang memungkinkan pengguna untuk mengkonversi Java mengkonversi objek ke string JSON, dan juga mengkonversi string JSON kembali ke objek. Java obyek. Gson dapat bekerja dengan sewenang-wenang Java objek, termasuk objek yang sudah ada yang kode sumbernya tidak Anda miliki.

Sejak versi 1.6, Gson memperkenalkan dua kelas, JSONReader ke jsonWriter, untuk menyediakan pemrosesan streaming data JSON.

  • jsonWriter โ€“ Streaming menulis ke JSON. Kita membuat sebuah jsonWriter Untuk memulai dan menyelesaikan pembuatan objek JSON, kita menggunakan fungsi-fungsi berikut. mulaiObjek() ke objek akhir()Di antara kedua panggilan tersebut, kami menulis data sebagai pasangan (kunci => nilai).
JsonWriter writer = new JsonWriter();
writer.beginObject();
writer.name("key").value("value");
writer.endObject();
  • JSONReader โ€“ Membaca data secara streaming dari JSON. Kita membuat objek JsonReader. Untuk memulai dan mengakhiri pembacaan objek JSON, kita menggunakan fungsi beginObject() dan endObject(). Di antara kedua panggilan tersebut, kita membaca data sebagai 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) data JSON sendiri.

Apa itu JAXB?

JAXB adalah singkatan dari Java Architekstur untuk XML Binding, yang merupakan perpustakaan yang menggunakan anotasi untuk mengonversi Java objek ke konten XML dan sebaliknya. Karena JAXB didefinisikan oleh spesifikasi, kita dapat menggunakan implementasi standar ini yang berbeda.

Dengan JAXB, kita sering menggunakan anotasi dasar berikut:

  • @XmlRootElementAnotasi ini menentukan tag terluar dari file XML, dan oleh karena itu dideklarasikan di atas sebuah kelas.
  • @XmlElementWrapper: Anotasi ini membuat elemen XML pembungkus di sekitar koleksi.
  • @XmlElementAnotasi ini menyatakan bahwa properti dari objek tersebut menjadi tag anak dari file XML.
  • @XmlAttributeAnotasi ini menyatakan bahwa properti dari objek tersebut menjadi atribut pada tag yang mengelilinginya.

Implementasi umumnya adalah sebagai berikut. Pertama, kita menginisialisasi JAXBConteks keberatan dengan objek saya kelas yang akan dikonversi.

JAXBContext jaxbContext = JAXBContext.newInstance(MyObject.class);

Kredensial mikro JAXBConteks Objek tersebut memiliki metode yang membuat objek yang mengubah konten XML menjadi sebuah Java objek, itu Unmarshaller.

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

Sama JAXBConteks Objek tersebut juga memiliki metode yang membuat objek yang mengkonversi sebuah Java objek menjadi konten XML, Marshaller.

Marshaller marshallerObj = jaxbContext.createMarshaller();

โš ๏ธ Peringatan: JAXB dihapus dari JDK pada Java 11. Di Java Pada versi 11 dan yang lebih baru, tambahkan API dan implementasi runtime ke proyek secara eksplisit, misalnya jakarta.xml.bind:jakarta.xml.bind-api Bersama org.glassfish.jaxb:jaxb-runtime, dan impor anotasi dari jakarta.xml.bind.annotation alih-alih javax.xml.bind.annotation.

Bagaimana cara mengubah XML ke JSON?

Kami mengimplementasikan contoh konversi XML ke JSON pada platform berikut. Versi di bawah ini adalah versi yang digunakan untuk tangkapan layar. Rilis JDK yang lebih baru, Eclipse, dan Gson bekerja dengan cara yang sama, dengan memperhatikan catatan JAXB di atas.

  • OpenJDK 8 untuk Ubuntu 18.04 x64.
  • Eclipse IDE 2019-03 (4.11.0)x64 Java Pengembangan untuk Ubuntu.
  • Gson 2.8.5.

Langkah 1) Buat proyek.
Buat yang baru Java proyek.

Buat yang baru Java Proyek.

Langkah 2) Tetapkan nama proyek.
Tetapkan nama proyek menjadi Contoh XmlToJson.

Tetapkan nama Proyek

Langkah 3) Buat folder.
Buat foldernya data/masukan berisi dua berkas sampel.xml ke sampel.json.

Buat data folder

Mari kita definisikan XML kita terlebih dahulu dengan departemen, peran, dan orang properti.

Secara umum, arsitekturnya adalah: satu departemen memiliki banyak peran, dan satu peran memiliki banyak orang. Diagram di bawah ini menunjukkan hubungan tersebut.

Hubungan Objek

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
	<department>
		<roles>
			<role id="1">
				<position>head</position>
				<salary>10k</salary>
			</role>
			<role id="2">
				<position>manager</position>
				<salary>8k</salary>
			</role>
			<role id="3">
				<position>employee</position>
				<salary>5k</salary>
			</role>
		</roles>
		<persons>
			<person id="1">
				<name>Red</name>
				<role>1</role>
			</person>
			<person id="2">
				<name>Green</name>
				<role>2</role>
			</person>
			<person id="3">
				<name>Blue</name>
				<role>2</role>
			</person>
			<person id="4">
				<name>Yellow</name>
				<role>3</role>
			</person>
			<person id="5">
				<name>Brown</name>
				<role>3</role>
			</person>
		</persons>
	</department>
</root>

Kedua, kita mendefinisikan JSON yang mengekspresikan ide yang sama. Perhatikan bahwa daftar orang yang datar menjadi array bersarang di dalam setiap peran, yang persis sama dengan transformasi yang dilakukan oleh kode konversi.

{
	"roles": [
		{
			"id": "1",
			"position": "head",
			"salary": "10k",
			"persons": [
				{
					"id": "1",
					"name": "Red"
				}
			]
		},
		{
			"id": "2",
			"position": "manager",
			"salary": "8k",
			"persons": [
				{
					"id": "2",
					"name": "Green"
				},
				{
					"id": "3",
					"name": "Blue"
				}
			]
		},
		{
			"id": "3",
			"position": "employee",
			"salary": "5k",
			"persons": [
				{
					"id": "4",
					"name": "Yellow"
				},
				{
					"id": "5",
					"name": "Brown"
				}
			]
		}
	]
}

Langkah 4) Mendefinisikan objek.
Definisikan kelas objek yang sesuai dalam paket tersebut. model.

Tentukan kelas objek

Peran.java

@XmlRootElement(name = "role")
public class Role {
	private String id;
	private String position;
	private String salary;
	public Role() {
		super();
	}
	public Role(String id, String position, String salary) {
		super();
		this.id = id;
		this.position = position;
		this.salary = salary;
	}
	@XmlAttribute(name = "id")
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	@XmlElement(name = "position")
	public String getPosition() {
		return position;
	}
	public void setPosition(String position) {
		this.position = position;
	}
	@XmlElement(name = "salary")
	public String getSalary() {
		return salary;
	}
	public void setSalary(String salary) {
		this.salary = salary;
	}
}

Orang.java

@XmlRootElement(name = "person")
public class Person {
	private String id;
	private String name;
	private String role;
	public Person() {
		super();
	}
	public Person(String id, String name, String role) {
		super();
		this.id = id;
		this.name = name;
		this.role = role;
	}
	@XmlAttribute(name = "id")
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	@XmlElement(name = "name")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	@XmlElement(name = "role")
	public String getRole() {
		return role;
	}
	public void setRole(String role) {
		this.role = role;
	}
}

Departemen.java

@XmlRootElement(name = "department")
public class Department {
	private List<Role> roles;
	private List<Person> persons;
	public Department() {
		super();
	}
	public Department(List<Role> roles, List<Person> persons) {
		super();
		this.roles = roles;
		this.persons = persons;
	}
	@XmlElementWrapper(name = "roles")
	@XmlElement(name = "role")
	public List<Role> getRoles() {
		return roles;
	}
	public void setRoles(List<Role> roles) {
		this.roles = roles;
	}
	@XmlElementWrapper(name = "persons")
	@XmlElement(name = "person")
	public List<Person> getPersons() {
		return persons;
	}
	public void setPersons(List<Person> persons) {
		this.persons = persons;
	}
}

XMLModel.java

@XmlRootElement(name = "root")
public class XMLModel {

	private Department department;

	public XMLModel() {
		super();
	}

	public XMLModel(Department department) {
		super();
		this.department = department;
	}

	@XmlElement(name = "department")
	public Department getDepartment() {
		return department;
	}

	public void setDepartment(Department department) {
		this.department = department;
	}

}

Langkah 5) Siapkan perpustakaan.
Tambahkan dan atur pustaka Gson 2.8.5 di Java Bangun Jalur.

Siapkan perpustakaan Gson

Tambahkan perpustakaan Gson 2.8.5 ke dalam Java Bangun Jalur

Jika proyek tersebut menggunakan Maven Alih-alih menambahkan jar secara manual, pustaka yang sama dideklarasikan sebagai dependensi. Versi 2.8.5 disematkan di sini agar sesuai dengan tangkapan layar, dan rilis Gson yang lebih baru berfungsi identik untuk contoh ini:

<dependencies>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>

    <!-- required on Java 11 and later -->
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
    </dependency>
</dependencies>

Ubah pesan XML menjadi Java objek menggunakan JAXB

Pertama, kita mendefinisikan kelas-kelas pelaksana dalam paket tersebut. layanan.

Tentukan kelas pertunjukan

Pada langkah pertama dari proses pertama, kami menggunakan teknik un-marshalling dari JAXB.

Unmarshalling memberikan kemampuan kepada aplikasi klien untuk mengkonversi data XML menjadi data turunan JAXB. Java benda.

Kita mendefinisikan fungsi tersebut getObjectFromXmlFile untuk menguraikan kembali file XML kita menjadi sebuah Java Objek. Fungsi ini didefinisikan dalam kelas. Layanan XML.

public XMLModel getObjectFromXmlFile(String filePath) {
	try {
		File file = new File(filePath);
		JAXBContext jaxbContext = JAXBContext.newInstance(XMLModel.class);

		Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
		XMLModel root = (XMLModel) jaxbUnmarshaller.unmarshal(file);

		return root;
	} catch (JAXBException e) {
		e.printStackTrace();
		return null;
	}
}

Kita memanggil kode di atas di dalam kelas. Layanan XmlToJson.

XMLService xmlService = new XMLService();
XMLModel xmlModel = xmlService.getObjectFromXmlFile(filePathIn);

Department department = xmlModel.getDepartment();
List<Role> roles = department.getRoles();
List<Person> persons = department.getPersons();

Pada titik ini, file XML telah menjadi tiga bagian. Java Objek-objek tersebut tersimpan dalam memori. Langkah selanjutnya adalah menuliskannya sebagai JSON.

mengubah Java objek ke pesan JSON menggunakan Gson

Pada langkah ini, kita mendefinisikan fungsi tersebut. tulisDataToJsonFile untuk menulis data ke file JSON. Fungsi ini didefinisikan dalam kelas tersebut. Layanan JSON.

Perhatikan bahwa untuk menulis daftar objek JSON, kita menggunakan fungsi-fungsi berikut. mulaiArray() ke array akhir()Di antara kedua panggilan ini, kita menulis setiap objek 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) {
	}
}

Kita memanggil kode di atas di dalam kelas. Layanan XmlToJson.

JsonService jsonService = new JsonService();
jsonService.writeDataToJsonFile(filePathOut, roles, persons);

Itulah proses pertama. Perulangan dalam mencocokkan setiap orang dengan ID peran saat ini, yang merupakan cara daftar orang XML datar menjadi array JSON bersarang.

Ubah pesan JSON menjadi Java objek menggunakan Gson

Pada langkah pertama dari proses kedua, kita mendefinisikan fungsi tersebut. dapatkanDataDariJsonFile untuk membaca data dari file JSON. Fungsi ini didefinisikan dalam kelas tersebut. Layanan JSON.

Perlu dicatat bahwa untuk membaca daftar objek JSON, kita menggunakan fungsi-fungsi berikut. mulaiArray() ke array akhir()Di antara kedua panggilan ini, kita membaca setiap objek 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) {

	}
}

Kita memanggil kode di atas di dalam kelas. Layanan XmlToJson.

JsonService jsonService = new JsonService();
List<Role> roles = new ArrayList<>();
List<Person> persons = new ArrayList<>();

jsonService.getDataFromJsonFile(filePathIn, roles, persons);

mengubah Java objek ke pesan XML menggunakan JAXB

Pada langkah ini, kita menggunakan teknik marshalling dari JAXB.

Marshalling memberikan kemampuan kepada aplikasi klien untuk mengkonversi data yang berasal dari JAXB. Java pohon objek menjadi data XML.

Kita mendefinisikan fungsi tersebut menguraiObjekKeXml untuk mengerahkan Java Objek ke pesan XML. Fungsi ini didefinisikan dalam kelas tersebut. Layanan XML.

public void parseObjectToXml(String filePath, XMLModel xmlModel) {
	try {
		JAXBContext contextObj = JAXBContext.newInstance(XMLModel.class);

		Marshaller marshallerObj = contextObj.createMarshaller();
		marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

		marshallerObj.marshal(xmlModel, new FileOutputStream(filePath));
	} catch (JAXBException je) {
		System.out.println("JAXBException");
	} catch (IOException ie) {
		System.out.println("IOException");
	}
}

Kita memanggil kode di atas di dalam kelas. Layanan XmlToJson.

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);

Itulah proses kedua. File yang dihasilkan sesuai dengan sample.xml asli, yang menegaskan bahwa proses bolak-balik tersebut mempertahankan setiap nilai.

Cara Mengonversi JSON ke XML di Java tanpa Kelas Model?

Pendekatan di atas adalah pilihan yang tepat ketika strukturnya diketahui dan stabil, karena kelas-kelas yang diberi anotasi mendokumentasikan struktur tersebut.tract. Ketika strukturnya tidak diketahui atau sering berubah, konverter generik lebih cepat.

The org.json library melakukan konversi dalam dua baris, tanpa kelas model apa pun:

import org.json.JSONObject;
import org.json.XML;

public class QuickConverter {

    public static void main(String[] args) {
        String str = "{\"username\":\"guru99user\",\"email\":\"guru99user@mail.com\"}";

        JSONObject json = new JSONObject(str);
        String xml = XML.toString(json);

        System.out.println(xml);
    }
}

Keluaran:

<username>guru99user</username><email>guru99user@mail.com</email>

Perhatikan bahwa rute generik tidak menghasilkan elemen akar dan tidak ada atribut, jadi XML.toString(json, "root") biasanya diperlukan. Tabel di bawah ini menyajikan kedua pendekatan tersebut secara berdampingan.

Kriterium Gson bersama JAXB konversi generik org.json
Kelas model yang dibutuhkan Ya Tidak
Kontrol atas struktur Lengkap, termasuk atribut. Terbatas, hanya elemen-elemen tertentu
Reshaping data Mungkin, seperti yang ditunjukkan dengan orang bersarang. Tidak memungkinkan
Baris kode Banyak Dua
Terbaik untuk Skema yang stabil dan terdokumentasi Struktur ad hoc atau tidak diketahui

JAXB membaca data XML dan Gson menuliskannya ke JSON, dan jalur sebaliknya menggunakan Gson untuk membaca JSON data tersebut kemudian ditulis kembali ke XML oleh JAXB. Untuk mempelajari lebih lanjut, tinjau XML dasar-dasar, yang lebih luas Java tutorial, dan Laporan Jasperyang menggunakan kedua format tersebut sebagai sumber data laporan.

Pertanyaan Umum Demo Slot

JAXB dihapus dari JDK pada Java 11. Tambahkan API jakarta.xml.bind bersama dengan runtime seperti jaxb-runtime, dan perbarui impor dari javax ke jakarta.

Tidak. Gson hanya menangani JSON. XML harus diubah terlebih dahulu. Java objek melalui JAXB, atau melalui parser lain seperti Jackson XML, sebelum Gson dapat melakukan serialisasi.

XmlElement menghasilkan tag anak yang berisi nilai, sedangkan XmlAttribute menempatkan nilai di dalam tag pembuka induknya. Atribut tidak dapat menampung struktur bersarang.

Streaming menjaga penggunaan memori tetap rendah dan memungkinkan struktur output berbeda dari kelas input, yang persis terjadi ketika orang-orang berada di dalam peran di sini.

Ya, dari contoh dokumen XML. Periksa anotasi wrapper pada koleksi, karena kelas yang dihasilkan sering kali menghilangkan XmlElementWrapper dan menghasilkan struktur yang diratakan.

JSON dan varian pembatas barisnya mendominasi, karena keduanya dipetakan langsung ke Python kamus dan aliran data secara efisien. XML masih muncul di tempat sistem perusahaan lama menyediakan data sumber.

Ringkaslah postingan ini dengan: