Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

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:

{
"username" : "guru99user",
"email" : "[email protected]"	
}

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:

Dalam tutorial ini, Anda akan belajar-

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 dibangun di atas struktur simpul bersarang. Setiap node akan memiliki tag pembuka dan tag penutup sebagai berikut:

<node>content</node>

Di mana:

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

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

Apa itu Gson?

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 writer = new JsonWriter();
writer.beginObject();
writer.name("key").value("value");
writer.endObject();
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:

Sintaks untuk implementasi umum adalah sebagai berikut. Pertama, kita akan menginisialisasi JAXBContext objek dengan MyObject objek untuk dikonversi.

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

Dalam JAXBContext . ini objek, ia memiliki metode untuk membuat objek yang mengubah konten XML menjadi objek Java, Unmarshaller .

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

Dalam JAXBContext . ini objek, ia memiliki metode untuk membuat objek yang mengubah objek Java menjadi konten XML yaitu Marshaller .

Marshaller marshallerObj = jaxbContext.createMarshaller();

Bagaimana cara mengonversi XML ke JSON?

Kami menerapkan contoh konversi XML – JSON pada platform:

Langkah 1 . Buat proyek.
Buat Proyek Java baru.

Langkah 2 . Tetapkan nama Proyek.
Tetapkan nama Proyek adalah XmlToJsonExample .

Langkah 3 . Buat folder.
Buat folder data/input berisi dua file sample.xml dan sampel.json .

Pertama-tama mari kita definisikan XML kita dengan departemen , peran dan orang properti.

Arsitektur umumnya adalah:; .

<?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, kami mendefinisikan JSON memiliki ide yang sama:

{
	"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 . Tentukan objek.
Tentukan kelas objek yang sesuai dalam paket model .

  • Role.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;
	}

}
  • Person.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;
	}

}
  • Department.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 library.
Tambahkan dan Siapkan library Gson 2.8.5 ke Java Build Path.

Konversi pesan XML ke objek Java menggunakan JAXB

Pertama, kami mendefinisikan kinerja yang dikelompokkan dalam paket layanan .

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

Un-marshalling menyediakan aplikasi klien kemampuan untuk mengubah data XML menjadi objek Java turunan JAXB.

Kami mendefinisikan fungsi getObjectFromXmlFile untuk un-marshal file XML kita kembali ke objek Java. Fungsi ini didefinisikan di kelas XMLService .

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

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

XMLService.
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");
	}
}

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.


java

  1. Kelas C++ dan Objek dengan Contoh
  2. Java Hello World:Cara Menulis Program Java Pertama Anda dengan Contoh
  3. String Length() Metode di Java:Cara menemukan dengan Contoh
  4. Metode Java String charAt() dengan Contoh
  5. String Java berisi() Metode | Periksa Substring dengan Contoh
  6. Java String EndsWith() Metode dengan Contoh
  7. Java BufferedReader:Cara Membaca File di Java dengan Contoh
  8. Deret Fibonacci di Java menggunakan Program Rekursi dan Loop
  9. Algoritma Insertion Sort di Java dengan Contoh Program
  10. Sortir Seleksi dalam Program Java dengan Contoh