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

Mengonversi JSON ke XML di Java dengan Gson & JAXB – Panduan Langkah demi Langkah

Apa Itu JSON?

JSON (JavaScript Object Notation) adalah format data ringan dan netral bahasa yang menggunakan pasangan kunci-nilai. Format ini banyak digunakan untuk pertukaran data dan mudah disimpan dalam file atau database.

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

Karakteristik utama:

Apa Itu XML?

XML (eXtensible Markup Language) adalah standar W3C untuk data terstruktur. Tidak seperti HTML, XML murni adalah format data—tanpa rendering visual. Ini memungkinkan tag khusus, menjadikannya ideal untuk pertukaran data lintas sistem.

Struktur node yang umum:

<node>content</node>

Di bagian atas file XML Anda harus mendeklarasikan versi:

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

Apa Itu Gson?

Gson adalah pustaka Java yang mentransmisikan objek Java ke JSON dan mendeserialisasi JSON kembali ke objek Java. Sejak v1.6 juga mendukung streaming melalui JsonReader dan JsonWriter.

Contoh penulis streaming:

JsonWriter writer = new JsonWriter(new FileWriter(filePath)); writer.beginObject(); writer.name("key").value("value"); writer.endObject(); writer.close();

Apa Itu JAXB?

JAXB (Java Architecture for XML Binding) memetakan kelas Java ke XML menggunakan anotasi. Ini mendukung marshalling (Java → XML) dan unmarshalling (XML → Java).

Anotasi umum:

Setup Proyek

  1. Buat proyek Java di IDE Anda (misalnya, Eclipse).
  2. Berikan nama XmlToJsonExample.
  3. Tambahkan folder data/input yang berisi sample.xml dan sample.json.
  4. Sertakan Gson 2.8.5 dalam build path.
  5. Tambahkan JAXB API (biasanya disertakan dengan Java 8).

Data Sampel

Representasi XML dari departemen dengan peran dan orang:

<?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>

Struktur JSON yang setara:

{ "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"}]} ] }

Kelas Model Java

Definisikan POJO berikut dalam paket model:

/* Role.java */ @XmlRootElement(name = "role") public class Role { private String id, position, salary; // getters, setters with @XmlAttribute/@XmlElement annotations } /* Person.java */ @XmlRootElement(name = "person") public class Person { private String id, name, role; // getters, setters with @XmlAttribute/@XmlElement annotations } /* Department.java */ @XmlRootElement(name = "department") public class Department { private List<Role> roles; private List<Person> persons; // getters/setters with @XmlElementWrapper/@XmlElement } /* XMLModel.java */ @XmlRootElement(name = "root") public class XMLModel { private Department department; // getter/setter with @XmlElement } 

Unmarshalling XML ke Objek Java (JAXB)

public XMLModel getObjectFromXmlFile(String path) throws JAXBException { File file = new File(path); JAXBContext ctx = JAXBContext.newInstance(XMLModel.class); Unmarshaller um = ctx.createUnmarshaller(); return (XMLModel) um.unmarshal(file); }

Marshalling Objek Java ke XML (JAXB)

public void parseObjectToXml(String path, XMLModel model) throws JAXBException, IOException { JAXBContext ctx = JAXBContext.newInstance(XMLModel.class); Marshaller m = ctx.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(model, new FileOutputStream(path)); }

Serialisasi Objek Java ke JSON (Gson)

public void writeDataToJsonFile(String path, List<Role> roles, List<Person> persons) throws IOException { JsonWriter writer = new JsonWriter(new FileWriter(path)); writer.setIndent(" "); writer.beginObject(); writer.name("roles").beginArray(); for (Role r : roles) { writer.beginObject(); writer.name("id").value(r.getId()); writer.name("position").value(r.getPosition()); writer.name("salary").value(r.getSalary()); writer.name("persons").beginArray(); for (Person p : persons) if (p.getRole().equals(r.getId())) { writer.beginObject(); writer.name("id").value(p.getId()); writer.name("name").value(p.getName()); writer.endObject(); } writer.endArray(); writer.endObject(); } writer.endArray(); writer.endObject(); writer.close(); }

Deserialisasi JSON ke Objek Java (Gson)

public void getDataFromJsonFile(String path, List<Role> roles, List<Person> persons) throws IOException { JsonReader reader = new JsonReader(new FileReader(path)); reader.beginObject(); while (reader.hasNext()) { String rootName = reader.nextName(); if ("roles".equals(rootName)) { reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); Role r = new Role(); while (reader.hasNext()) { String key = reader.nextName(); switch (key) { case "id": r.setId(reader.nextString()); break; case "position": r.setPosition(reader.nextString()); break; case "salary": r.setSalary(reader.nextString()); break; case "persons": reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); Person p = new Person(); p.setRole(r.getId()); while (reader.hasNext()) { String pKey = reader.nextName(); if ("id".equals(pKey)) p.setId(reader.nextString()); else if ("name".equals(pKey)) p.setName(reader.nextString()); } persons.add(p); reader.endObject(); } reader.endArray(); } } roles.add(r); reader.endObject(); } reader.endArray(); } } reader.endObject(); reader.close(); }

Alur Kerja Konversi Lengkap

  1. Unmarshal sample.xml ke XMLModel menggunakan JAXB.
  2. Serialisasi objek Java yang dihasilkan ke sample.json dengan Gson.
  3. Deserialisasi sample.json kembali ke objek Java.
  4. Marshal objek tersebut ke file XML baru.

Kesimpulan

Panduan ini menunjukkan pipeline konversi dua langkah yang bersih: JAXB menangani XML ↔ Java, sementara Gson menangani JSON ↔ Java. Dengan menggabungkan pustaka ini, pengembang dapat secara andal mentransformasikan data antara format dalam aplikasi Java.

java

  1. Kelas & Objek C++: Panduan Praktis dengan Contoh Kode
  2. Java Hello World: Panduan Langkah demi Langkah Menulis Program Java Pertama Anda
  3. Metode Java String length(): Cara Mendapatkan Ukuran String (Contoh)
  4. Memahami Java String.charAt(): Sintaks, Tipe Kembali, Pengecualian, dan Contoh Praktis
  5. Metode Java String.contains(): Cara Memeriksa Substring – Contoh Praktis
  6. Menguasai Java String.endsWith(): Cara Memeriksa Akhir String dengan Contoh
  7. Membaca File di Java dengan BufferedReader – Panduan Praktis dengan Contoh
  8. Menghasilkan Deret Fibonacci di Java: Contoh For, While, dan Rekursif
  9. Algoritma Insertion Sort di Java: Contoh Jelas & Panduan Langkah demi Langkah
  10. Selection Sort di Java: Contoh Langkah demi Langkah & Kode Lengkap