GSON மற்றும் JAXB: JAVA உதாரணத்தைப் பயன்படுத்தி JSON ஐ XML ஆக மாற்றவும்

JSON என்றால் என்ன?

JSON என்பது ஜாவாஸ்கிரிப்ட் ஆப்ஜெக்ட் குறியீட்டின் சுருக்கமாகும், இது பெரும்பாலான நிரலாக்க மொழிகள் தற்போது படிக்கக்கூடிய ஒரு குறிப்பிட்ட விதியைப் பின்பற்றும் தரவு வடிவமாகும். நாம் அதை ஒரு கோப்பில் சேமிக்க அல்லது தரவுத்தளத்தில் பதிவு செய்யலாம். JSON வடிவம் தரவை விவரிக்க முக்கிய மதிப்பு ஜோடிகளைப் பயன்படுத்துகிறது.

உதாரணத்தைப் பின்தொடர்வதில், தனிப்பட்ட தகவல்களைச் சேமிக்கும் JSON சரத்தை நாங்கள் வரையறுக்கிறோம்: | _+_ |

எனவே JSON இன் தொடரியல் மிகவும் எளிது. ஒவ்வொரு தரவு தகவலும் இரண்டு பகுதிகளைக் கொண்டிருக்கும்: புலப் பெயருடன் தொடர்புடைய ஒரு விசை மற்றும் மதிப்பு மற்றும் ஒரு குறிப்பிட்ட பதிவில் அதன் மதிப்பு. ஆனால் மேலும் பார்க்கும்போது, ​​இது போன்ற சில விஷயங்கள் உள்ளன:

  • சுருள் பிரேஸ்களால் JSON சரம் இணைக்கப்பட்டுள்ளது {}.
  • JSON இன் விசைகள் மற்றும் மதிப்புகள் மேற்கோள் குறிகளில் இணைக்கப்பட வேண்டும் {'}.
  • அதிக தரவு இருந்தால் (அதிக விசை => மதிப்பு ஜோடிகள்), பிரிப்பதற்கு நாங்கள் காற்புள்ளிகளை (,) பயன்படுத்துகிறோம்.
  • JSON விசைகள் கையொப்பமிடப்படாத எழுத்துக்கள் அல்லது எண்கள், _, மற்றும் இடைவெளிகள் இல்லாமல் இருக்க வேண்டும், முதல் எழுத்து எண்களுக்கு அமைக்கப்படக்கூடாது.

இந்த டுடோரியலில், நீங்கள் கற்றுக்கொள்வீர்கள்

எக்ஸ்எம்எல் என்றால் என்ன?

எக்ஸ்எம்எல் என்பது விரிவாக்கக்கூடிய மார்க்அப் மொழியைக் குறிக்கிறது, இது உலகளாவிய வலை கூட்டமைப்பால் முன்மொழியப்பட்ட நீட்டிக்கக்கூடிய மார்க்அப் மொழி ( http://www.w3.org/ ) பிற மார்க்அப் மொழிகளை உருவாக்க. இது பல்வேறு வகையான தரவுகளை விவரிக்கக்கூடிய ஒரு எளிய துணைக்குழு ஆகும், எனவே கணினிகளுக்கு இடையில் தரவைப் பகிர்வதில் இது மிகவும் பயனுள்ளதாக இருக்கும்.

XML இல் உள்ள குறிச்சொற்கள் பெரும்பாலும் முன் வரையறுக்கப்படவில்லை, ஆனால் அவை பயனர் மரபுகளின்படி உருவாக்கப்படுகின்றன. எக்ஸ்எம்எல் HTML இன் நன்மைகளின் அடிப்படையில் புதிய அம்சங்களை அறிமுகப்படுத்துகிறது.

பல்வேறு அமைப்புகள் மற்றும் தீர்வுகளில் இன்னும் சில பயனுள்ள XML- உருவாக்கும் அம்சங்கள் உள்ளன:

  • எக்ஸ்எம்எல் விரிவாக்கக்கூடியது: எக்ஸ்எம்எல் உங்கள் பயன்பாட்டிற்கு ஏற்றவாறு உங்கள் சொந்த தனிப்பயன் குறிச்சொற்களை உருவாக்க அனுமதிக்கிறது.
  • எக்ஸ்எம்எல் தரவைக் காட்டுகிறது, அதை காண்பிக்கவில்லை: எக்ஸ்எம்எல் தரவை எப்படி காண்பிக்கப்படும் என்பதை பொருட்படுத்தாமல் சேமிக்க அனுமதிக்கிறது.
  • எக்ஸ்எம்எல் ஒரு பொதுவான தரநிலை: எக்ஸ்எம்எல் உலகளாவிய வலை கூட்டமைப்பு (W3C) மூலம் உருவாக்கப்பட்டது மற்றும் இது ஒரு திறந்த தரமாக கிடைக்கிறது.

எக்ஸ்எம்எல் ஒரு உள்ளமைக்கப்பட்ட முனை கட்டமைப்பில் கட்டப்பட்டுள்ளது. ஒவ்வொரு முனையிலும் பின்வருமாறு ஒரு தொடக்கக் குறி மற்றும் ஒரு மூடும் குறி இருக்கும்: | _+_ |

இதில்:

  • ஒரு திறந்த குறிச்சொல், இந்த குறிச்சொல்லின் பெயர் உங்களால் வரையறுக்கப்படுகிறது.
  • ஒரு மூடிய குறி, இந்த குறிச்சொல்லின் பெயர் திறந்த குறிச்சொல்லின் பெயருடன் பொருந்த வேண்டும்.
  • உள்ளடக்கம் இந்த குறிச்சொல்லின் உள்ளடக்கம்.

ஒவ்வொரு எக்ஸ்எம்எல் கோப்பின் மேல் பதிப்பு எக்ஸ்எம்எல் பயன்பாட்டில் இருப்பதைக் குறிக்க நீங்கள் ஒரு குறிச்சொல்லை அறிவிக்க வேண்டும். அறிவுறுத்தல் குறிச்சொல்லின் தொடரியல்: | _+_ |

ஜிசன் என்றால் என்ன?

ஜிசன் ( https://github.com/google/gson ) ஒரு ஜாவா நூலகம், இது பயனர்களை ஜாவா பொருளில் இருந்து JSON சரத்திற்கு மாற்றவும், JSON சரத்திலிருந்து ஜாவா பொருளாக மாற்றவும் அனுமதிக்கிறது. Gson தன்னிச்சையான ஜாவா பொருள்களுடன் அவற்றின் மூலக் குறியீடு இல்லாமல் இருக்கும் பொருள்கள் உட்பட வேலை செய்யலாம்.

பதிப்பு 1.6 முதல், Gson இரண்டு புதிய வகுப்புகளை அறிமுகப்படுத்துகிறது - ஜேசன் ரீடர் மற்றும் ஜேசன்ரைட்டர் JSON தரவில் ஸ்ட்ரீமிங் செயலாக்கத்தை வழங்க.

  • ஜேசன்ரைட்டர் - ஸ்ட்ரீமிங் JSON க்கு எழுதுங்கள். பொதுவான செயல்பாட்டிற்கான தொடரியல் பின்வருமாறு. நாங்கள் ஒன்றை உருவாக்குகிறோம் ஜேசன்ரைட்டர் பொருள் JSON சரத்தை உருவாக்கத் தொடங்க மற்றும் முடிக்க, நாங்கள் செயல்பாட்டைப் பயன்படுத்துகிறோம் startObject () மற்றும் endObject () . இந்த இரண்டு செயல்பாடுகளின் நடுவில், ஜோடிகளுடன் தரவை எழுதுகிறோம் (விசை => மதிப்பு).
{ 'username' : 'on2vhfuser', 'email' : 'This email address is being protected from spambots. You need JavaScript enabled to view it.' } 
  • ஜேசன் ரீடர் - ஸ்ட்ரீமிங் படிக்க JSON. பொதுவான செயல்பாட்டிற்கான தொடரியல் பின்வருமாறு. நாங்கள் ஒரு JsonReader பொருளை உருவாக்குகிறோம். JSON சரத்தை உருவாக்கத் தொடங்கி முடிக்க, நாம் startObject () மற்றும் endObject () என்ற செயல்பாட்டைப் பயன்படுத்துகிறோம். இந்த இரண்டு செயல்பாடுகளின் நடுவில், ஜோடிகளுடன் (கீ => மதிப்பு) தரவைப் படிக்கிறோம்.
 content 

Gson ஸ்ட்ரீமிங் செயலாக்கம் வேகமாக உள்ளது. இருப்பினும் JSON தரவை செயலாக்க ஒவ்வொரு ஜோடியையும் (கீ => மதிப்பு) நீங்கள் கையாள வேண்டும்.

JAXB என்றால் என்ன?

JAXB என்பது XML பைண்டிங்கிற்கான ஜாவா கட்டிடக்கலை ஆகும், இது ஜாவா பொருள்களை XML உள்ளடக்கமாக மாற்றுவதற்கு சிறுகுறிப்புகளைப் பயன்படுத்தும் நூலகமாகும். JAXB ஒரு விவரக்குறிப்பு வழியாக வரையறுக்கப்பட்டுள்ளதால், இந்தத் தரத்திற்கு நாம் பல்வேறு செயலாக்கங்களைப் பயன்படுத்தலாம்.

JAXB உடன், நாம் அடிக்கடி பின்வரும் அடிப்படை சிறுகுறிப்புகளைப் பயன்படுத்துகிறோம், அதாவது:

  • @XmlRootElement : இந்த சிறுகுறிப்பு எக்ஸ்எம்எல் கோப்பின் வெளிப்புறக் குறி என்ன என்பதைக் குறிப்பிடுகிறது, எனவே இது ஒரு வகுப்பின் மேல் அறிவிக்கப்படுகிறது.
  • @XmlElementWrapper : இந்த குறிப்பு சேகரிப்புகளை சுற்றி ஒரு ரேப்பர் XML உறுப்பை உருவாக்குகிறது.
  • @XmlElement : இந்த சிறுகுறிப்பு எக்ஸம்எல் கோப்பின் குறிச்சொல்லாக பொருளின் பண்புக்கூறாக அறிவிக்க பயன்படுகிறது.
  • @Xml பண்பு : இந்த சிறுகுறிப்பு பொருளின் பண்புக்கூறாக அறிவிக்க பயன்படுகிறது XML கோப்பின் குறிச்சொல்.

பொதுவான செயல்பாட்டிற்கான தொடரியல் பின்வருமாறு. முதலில், நாங்கள் துவக்குவோம் JAXBC உரை உடன் பொருள் MyObject மாற்றுவதற்கான பொருள். | _+_ |

இதில் JAXBC உரை பொருள், எக்ஸ்எம்எல் உள்ளடக்கத்தை ஜாவா பொருளாக மாற்றும் ஒரு பொருளை உருவாக்க ஒரு முறை உள்ளது, Unmarshaller .

இதில் JAXBC உரை பொருள், ஜாவா பொருளை எக்ஸ்எம்எல் உள்ளடக்கத்திற்கு மாற்றும் பொருளை உருவாக்க ஒரு முறை உள்ளது மார்ஷலர் .

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

ஆரம்ப அமைப்பு

மேடையில் XML - JSON மாற்றத்தின் உதாரணத்தை நாங்கள் செயல்படுத்துகிறோம்:

  • உபுண்டு 18.04 x64 க்கு JDK 8 ஐத் திறக்கவும்.
  • கிரகணம் IDE 2019-03 (4.11.0) x64 உபுண்டுவிற்கான ஜாவா மேம்பாடு.
  • ஜிசன் 2.8.5.

படி 1 . ஒரு புதிய ஜாவா திட்டத்தை உருவாக்கவும்.

ஒரு புதிய ஜாவா திட்டத்தை உருவாக்கவும்.



படி 2 . திட்டத்தின் பெயரை அமைக்கவும் XmlToJson உதாரணம் .

திட்டப் பெயரை அமைக்கவும்.

படி 3 . கோப்புறையை உருவாக்கவும் தரவு/உள்ளீடு இரண்டு கோப்புகளைக் கொண்டது மாதிரி. xml மற்றும் மாதிரி.ஜ்சன் .

கோப்புறை தரவு/உள்ளீட்டை உருவாக்கவும்.



முதலில் எக்ஸ்எம்எல்லை வரையறுப்போம் துறை , பங்கு மற்றும் நபர் பண்புகள்

பொதுவான கட்டமைப்பு: .

பொருள் உறவுகள்.

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

இரண்டாவதாக, JSON க்கு அதே யோசனை இருப்பதை நாங்கள் வரையறுக்கிறோம்: | _+_ |

படி 4 . தொகுப்பில் தொடர்புடைய பொருள் வகுப்புகளை வரையறுக்கவும் மாதிரி .

பொருள் வகுப்புகளை வரையறுக்கவும்.

  • பங்கு. ஜாவா:
JAXBContext jaxbContext = JAXBContext.newInstance(MyObject.class); 
  • நபர்.ஜாவா:
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
  • துறை. ஜாவா:
Marshaller marshallerObj = jaxbContext.createMarshaller(); 

XMLModel.java:

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

படி 5 . Gson 2.8.5 நூலகத்தை அமைக்கவும்.

ஜாவா பில்ட் பாதையில் Gson 2.8.5 நூலகத்தைச் சேர்க்கவும்.

ஆண்ட்ராய்டில் எஸ்டி கார்டு காட்டப்படவில்லை

JAXB ஐப் பயன்படுத்தி XML செய்தியை ஜாவா பொருள்களாக மாற்றவும்

முதலில், தொகுப்பில் வகைப்படுத்தப்பட்ட செயல்திறனை நாங்கள் வரையறுக்கிறோம் சேவை .

நிகழ்த்தும் வகுப்புகளை வரையறுக்கவும்.

முதல் செயல்முறையின் முதல் படியில், நாங்கள் JAXB இன் Un-marshalling நுட்பத்தைப் பயன்படுத்துகிறோம்.

அன்-மார்ஷாலிங் ஒரு வாடிக்கையாளர் பயன்பாட்டிற்கு XML தரவை JAXB- யிலிருந்து பெறப்பட்ட ஜாவா பொருள்களாக மாற்றும் திறனை வழங்குகிறது.

நாங்கள் செயல்பாட்டை வரையறுக்கிறோம் getObjectFromXmlFile எங்கள் எக்ஸ்எம்எல் கோப்பை மீண்டும் ஜாவா பொருளுக்கு மாற்றுவது. இந்த செயல்பாடு வகுப்பில் வரையறுக்கப்பட்டுள்ளது எக்ஸ்எம்எல் சேவை .

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

வகுப்பில் மேலே உள்ள குறியீட்டை அழைக்கிறோம் XmlToJson சேவை .

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

பின்னர் நாங்கள் அடுத்த கட்டத்திற்கு செல்கிறோம்.

Gson ஐப் பயன்படுத்தி ஜாவா பொருட்களை JSON செய்தியாக மாற்றவும்

இந்த கட்டத்தில், நாங்கள் செயல்பாட்டை வரையறுக்கிறோம் writeDataToJsonFile JSON கோப்பில் தரவை எழுத. இந்த செயல்பாடு வகுப்பில் வரையறுக்கப்பட்டுள்ளது ஜேசன் சர்வீஸ் .

JSON சரங்களின் பட்டியலை எழுத, நாங்கள் செயல்பாட்டைப் பயன்படுத்துகிறோம் startArray () மற்றும் endArray () . இந்த இரண்டு செயல்பாடுகளுக்கு இடையில், ஒவ்வொரு JSON சரத்தையும் எழுதுகிறோம். | _+_ |

மேலே உள்ள குறியீட்டை வகுப்பில் அழைக்கிறோம் XmlToJson சேவை .

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

அதுதான் முதல் செயல்முறை.

Gson ஐப் பயன்படுத்தி JSON செய்தியை ஜாவா பொருள்களாக மாற்றவும்

இரண்டாவது செயல்முறையின் முதல் படியில், நாம் செயல்பாட்டை வரையறுக்கிறோம் getDataFromJsonFile JSON கோப்பிலிருந்து தரவைப் படிக்க. இந்த செயல்பாடு வகுப்பில் வரையறுக்கப்பட்டுள்ளது ஜேசன் சர்வீஸ் .

JSON சரங்களின் பட்டியலைப் படிக்க, நாங்கள் செயல்பாட்டைப் பயன்படுத்துகிறோம் startArray () மற்றும் endArray () . இந்த இரண்டு செயல்பாடுகளுக்கு இடையில், ஒவ்வொரு JSON சரத்தையும் படிக்கிறோம். | _+_ |

மேலே உள்ள குறியீட்டை வகுப்பில் அழைக்கிறோம் XmlToJson சேவை .

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

ஜ்சனை எக்ஸ்எம்எல் ஜாவாவாக மாற்றுவது எப்படி?

JSON முதல் XML வரை இல் ஜாவா JSONObject json = புதிய JSONObject (str) பயன்படுத்தி மாற்றப்படுகிறது; லேசான கயிறு xml = XML . உங்களிடம் சரியான டிடிடி கோப்பு அல்லது எக்ஸ்எம்எல் கோப்பு இருந்தால் json ஐ xml ஆகவும் xml ஐ json ஆகவும் மாற்றுவது மிகவும் எளிது.

பின்னர் நாங்கள் அடுத்த கட்டத்திற்கு செல்கிறோம்.

JAXB ஐப் பயன்படுத்தி ஜாவா பொருட்களை XML செய்தியாக மாற்றவும்

இந்த கட்டத்தில், நாங்கள் JAXB இன் மார்ஷலிங் நுட்பத்தைப் பயன்படுத்துகிறோம்.

மார்ஷலிங் ஒரு வாடிக்கையாளர் பயன்பாட்டிற்கு JAXB- யிலிருந்து பெறப்பட்ட ஜாவா பொருள் மரத்தை XML தரவாக மாற்றும் திறனை வழங்குகிறது.

XML செய்திக்கு ஜாவா பொருளை மாற்றுவதற்கு parseObjectToXm செயல்பாட்டை நாங்கள் வரையறுக்கிறோம். இந்த செயல்பாடு வகுப்பில் வரையறுக்கப்பட்டுள்ளது | _+_ |

மேலே உள்ள குறியீட்டை வகுப்பில் அழைக்கிறோம் XmlToJson சேவை .

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

அது இரண்டாவது செயல்முறை.

முடிவுரை

இந்த டுடோரியலில், JAXB XML தரவைப் படிக்கவும் Gson அதை JSON க்கு எழுதவும் ஒரு வழியை சுருக்கமாக கற்றுக்கொண்டோம். மாறாக, GSON JSON தரவைப் படித்த விதத்தையும் JAXB அதை XML க்கு எழுதுவதையும் பார்த்தோம்.

இந்த கட்டுரை டேவிட் ஹோவர்டால் வழங்கப்பட்டது