Pārveidojiet JSON uz XML, izmantojot Gson un JAXB: JAVA piemērs

Kas ir JSON?

JSON ir saīsinājums no Javascript Object Notation, kas ir datu veids, kas atbilst noteiktam noteikumam, ka lielākā daļa programmēšanas valodu pašlaik ir lasāmas. Mēs varam viegli to saglabāt failā vai ierakstīt datu bāzē. JSON formāts datu aprakstīšanai izmanto atslēgu un vērtību pārus.

Ievērojot piemēru, mēs definējam JSON virkni, kurā tiek glabāta personiskā informācija: | _+_ |

Tātad JSON sintakse ir ļoti vienkārša. Katrai datu informācijai būs divas daļas: atslēga un vērtība, kas atbilst lauka nosaukumam un tā vērtībai noteiktā ierakstā. Bet, skatoties tālāk, ir dažas šādas lietas:

  • JSON virkne ir ietverta ar cirtainām iekavām {}.
  • JSON atslēgas un vērtības ir jāiekļauj pēdiņās {'}.
  • Ja ir vairāk datu (vairāk atslēgu => vērtību pāru), atdalīšanai izmantojam komatus (,).
  • JSON taustiņiem jābūt parakstītiem burtiem vai cipariem, _ un bez atstarpēm, pirmajai rakstzīmei nevajadzētu iestatīt ciparus.

Šajā apmācībā jūs uzzināsit

Kas ir XML?

XML apzīmē eXtensible Markup Language, ko sauc arī par paplašināmo iezīmēšanas valodu, ko ierosinājis World Wide Web Consortium ( http://www.w3.org/ ), lai izveidotu citas iezīmēšanas valodas. Šī ir vienkārša apakškopa, kas var aprakstīt daudz dažādu veidu datus, tāpēc tā ir ļoti noderīga, koplietojot datus starp sistēmām.

XML tagi bieži vien nav iepriekš definēti, bet tiek veidoti atbilstoši lietotāju noteikumiem. XML ievieš jaunas funkcijas, kuru pamatā ir HTML priekšrocības.

Dažādās sistēmās un risinājumos ir vēl dažas noderīgas XML veidošanas funkcijas:

  • XML ir paplašināms: XML ļauj jums izveidot pielāgotus tagus atbilstoši jūsu lietojumprogrammai.
  • XML satur datus, nevis tos parāda: XML ļauj saglabāt datus neatkarīgi no tā, kā tie tiks parādīti.
  • XML ir izplatīts standarts: XML izstrādāja World Wide Web Consortium (W3C), un tas ir pieejams kā atvērts standarts.

XML pamatā ir ligzdota mezgla struktūra. Katram mezglam būs sākuma un beigu tags šādi: | _+_ |

Kurā:

  • ir atvērts tags, šī taga nosaukumu esat definējis jūs.
  • ir slēgts tags, šī taga nosaukumam jāatbilst atvērtā taga nosaukumam.
  • saturu ir šī taga saturs.

Katra XML faila augšpusē jums ir jādeklarē tags, kas norāda XML versiju. Instrukciju taga sintakse: | _+_ |

Kas ir Gson?

Gson ( https://github.com/google/gson ) ir java bibliotēka, kas ļauj lietotājiem konvertēt no Java objekta uz JSON virkni, kā arī konvertēt no JSON virknes uz Java objektu. Gson var strādāt ar patvaļīgiem Java objektiem, ieskaitot esošos objektus, bez jūsu avota koda.

Kopš 1.6 versijas Gson ievieš divas jaunas klases - JsonReader un JsonWriter nodrošināt JSON datu straumēšanas apstrādi.

  • JsonWriter - Streaming rakstīt JSON. Vispārējās ieviešanas sintakse ir šāda. Mēs izveidojam a JsonWriter objekts. Lai sāktu un pabeigtu JSON virknes izveidi, mēs izmantojam šo funkciju beginObject () un endObject () . Šo divu funkciju izpildes laikā mēs veicam datu rakstīšanu ar pāriem (atslēga => vērtība).
{ 'username' : 'on2vhfuser', 'email' : 'This email address is being protected from spambots. You need JavaScript enabled to view it.' } 
  • JsonReader - Straumēšana lasīta no JSON. Vispārējās ieviešanas sintakse ir šāda. Mēs izveidojam JsonReader objektu. Lai sāktu un pabeigtu JSON virknes izveidi, mēs izmantojam funkciju beginObject () un endObject (). Šo divu funkciju izpildes laikā mēs veicam datu nolasīšanu ar pāriem (atslēga => vērtība).
 content 

Gson straumēšanas apstrāde ir ātra. Tomēr jums ir jārīkojas ar katru JSON datu apstrādes pāri (atslēga => vērtība).

Kas ir JAXB?

JAXB apzīmē Java Architecture for XML Binding, kas ir bibliotēka, kas izmanto anotācijas, lai Java objektus pārvērstu XML saturā un otrādi. Tā kā JAXB ir definēts, izmantojot specifikāciju, mēs varam izmantot dažādas šī standarta ieviešanas iespējas.

Izmantojot JAXB, mēs bieži izmantojam šādas pamata anotācijas, proti:

  • @XmlRootElement : Šī anotācija norāda, kāds ir XML faila ārējais tags, un tāpēc tas tiek pasludināts virs klases.
  • @XmlElementWrapper : Šī anotācija izveido iesaiņojuma XML elementu ap kolekcijām.
  • @XmlElement : Šī anotācija tiek izmantota, lai deklarētu, ka objekta atribūts ir XML faila tags.
  • @XmlAttribute : Šī piezīme, ko izmanto arī, lai deklarētu objekta atribūtu, ir XML faila tags.

Vispārējās ieviešanas sintakse ir šāda. Pirmkārt, mēs inicializēsim JAXBContext objekts ar MyObject konvertējamais objekts. | _+_ |

Šajā JAXBContext objekts, tam ir metode, lai izveidotu objektu, kas pārveido XML saturu par Java objektu, Unmarshaller .

Šajā JAXBContext objekts, tam ir metode, lai izveidotu objektu, kas Java objektu pārvērš par XML saturu Marshaller .

JsonWriter writer = new JsonWriter(); writer.beginObject(); writer.name('key').value('value'); writer.endObject(); 

Sākotnējā iestatīšana

Mēs platformā ieviešam XML - JSON konvertēšanas piemēru:

  • Atveriet JDK 8 operētājsistēmai Ubuntu 18.04 x64.
  • Eclipse IDE 2019-03 (4.11.0) x64 Java izstrāde Ubuntu.
  • Gson 2.8.5.

1. darbība . Izveidojiet jaunu Java projektu.

Izveidojiet jaunu Java projektu.



2. solis . Iestatīt Projekta nosaukums ir XmlToJsonExample .

Iestatiet projekta nosaukumu.

3. solis . Izveidot mapi dati/ievade kas satur divus failus sample.xml un sample.json .

Izveidojiet mapes datus/ievadi.



Vispirms definēsim savu XML ar nodaļa , lomu un persona īpašības.

Vispārējā arhitektūra ir:; .

Objektu attiecības.

JsonReader reader = new JsonReader(); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals('key')) { String value = reader.nextString(); } } reader.endObject(); 

Otrkārt, mēs definējam JSON, kam ir tāda pati ideja: | _+_ |

4. solis . Iepakojumā definējiet atbilstošās objektu klases modelis .

Definējiet objektu klases.

  • Loma.java:
JAXBContext jaxbContext = JAXBContext.newInstance(MyObject.class); 
  • Person.java:
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
  • Department.java:
Marshaller marshallerObj = jaxbContext.createMarshaller(); 

XMLModel.java:

 head 10k manager 8k employee 5k Red 1 Green 2 Blue 2 Yellow 3 Brown 3 

5. solis . Izveidot bibliotēku Gson 2.8.5.

Pievienojiet bibliotēku Gson 2.8.5 Java būvēšanas ceļā.

kāda ir labākā zvanu ierakstīšanas lietotne

Pārveidojiet XML ziņojumu par Java objektiem, izmantojot JAXB

Pirmkārt, mēs definējam sniegumu, kas klasificēts paketē apkalpošana .

Definējiet izpildes nodarbības.

Pirmā procesa pirmajā posmā mēs izmantojam JAXB Un-Marshalling tehniku.

Nošķiršana nodrošina klienta lietojumprogrammai iespēju pārveidot XML datus par JAXB atvasinātiem Java objektiem.

Mēs definējam funkciju getObjectFromXmlFile lai atdalītu mūsu XML failu atpakaļ uz Java objektu. Šī funkcija ir definēta klasē XMLService .

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

Mēs klasē saucam iepriekš minēto kodu XmlToJsonService .

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

Tad mēs ejam uz nākamo soli.

Pārveidojiet Java objektus par JSON ziņojumu, izmantojot Gson

Šajā posmā mēs definējam funkciju writeDataToJsonFile lai ierakstītu datus JSON failā. Šī funkcija ir definēta klasē JsonService .

Ņemiet vērā, ka, lai uzrakstītu JSON virkņu sarakstu, mēs izmantojam šo funkciju beginArray () un endArray () . Starp šīm divām funkcijām mēs rakstām katru JSON virkni. | _+_ |

Mēs klasē saucam iepriekš minēto kodu XmlToJsonService .

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

Tas ir pirmais process.

Pārveidojiet JSON ziņojumu par Java objektiem, izmantojot Gson

Otrā procesa pirmajā solī mēs definējam funkciju getDataFromJsonFile lai lasītu datus no JSON faila. Šī funkcija ir definēta klasē JsonService .

Ņemiet vērā, ka, lai lasītu JSON virkņu sarakstu, mēs izmantojam šo funkciju beginArray () un endArray () . Starp šīm divām funkcijām mēs lasām katru JSON virkni. | _+_ |

Mēs klasē saucam iepriekš minēto kodu XmlToJsonService .

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

Kā pārvērst Json uz XML Java?

JSON uz XML iekšā JAVA tiek konvertēts, izmantojot JSONObject json = new JSONObject (str); Stīga xml = XML . Ja jums ir derīgs dtd fails vai xml fails, tad ir ļoti viegli pārveidot json uz xml un arī xml uz json.

Tad mēs ejam uz nākamo soli.

Pārveidojiet Java objektus XML ziņojumā, izmantojot JAXB

Šajā solī mēs izmantojam JAXB sakārtošanas paņēmienu.

Marshalling nodrošina klienta lietojumprogrammai iespēju pārvērst no JAXB atvasinātu Java objektu koku XML datos.

Mēs definējam funkciju parseObjectToXm, lai sakārtotu Java objektu XML ziņojumā. Šī funkcija ir definēta klasē | _+_ |

Mēs klasē saucam iepriekš minēto kodu XmlToJsonService .

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

Tas ir otrais process.

Secinājums

Šajā apmācībā mēs īsumā iemācījāmies vienu veidu, kā JAXB var nolasīt XML datus un Gson to rakstīt JSON. Gluži pretēji, mēs redzējām arī veidu, kā Gson lasīja JSON datus un JAXB rakstīja tos XML.

Šī raksta autors ir Deivids Hovards