"ஹாய், அமிகோ!"
"ஹாய், எல்லி!"
"நீங்கள் ஏற்கனவே JSON உடன் அறிமுகப்படுத்தப்பட்டிருப்பதால், இன்று அதைப் பற்றி மேலும் பேசலாம்."
"சரி. இது பொதுவாக எங்கே பயன்படுத்தப்படுகிறது?"
"இது வழக்கமாக எவ்வாறு செயல்படுகிறது. யாரோ ஒருவர் (கிளையன்ட்) ஜாவா நிரலிலிருந்து (சர்வரில்) தரவைக் கோருகிறார். நிரல் ஜாவா பொருள்களை உருவாக்கி, தரவுத்தளத்திலிருந்து தகவல்களை நிரப்புகிறது. பின்னர் கோரிக்கையாளர் (கிளையன்ட்) வடிவத்திற்கு மாற்றுகிறது ) JSON போன்றவற்றைப் புரிந்துகொண்டு அவற்றைத் திருப்பி அனுப்ப முடியும்."
"ஜாவாவில் JSON உடன் எவ்வாறு வேலை செய்வது என்று நான் உங்களுக்குச் சொல்கிறேன். முக்கியமாக, நாம் இரண்டு விஷயங்களை மட்டுமே செய்ய வேண்டும்: ஜாவா பொருட்களை JSON வடிவத்தில் வரிசைப்படுத்துவது மற்றும் JSON வடிவத்தில் இருந்து ஜாவா பொருள்களை சீரமைப்பது."
"வேறு வார்த்தைகளில் கூறுவதானால், JSON என்பது ஒரு நிரலில் இருந்து மற்றொரு நிரலுக்கு செய்திகளை/தரவை அனுப்புவதற்கான ஒரு தரநிலையாகும். இது போன்ற நிறைய தரநிலைகள் உள்ளன. ஆனால் நிரல் ஜாவாஸ்கிரிப்டில் எழுதப்பட்டிருந்தால், அது பொதுவாக JSON ஐப் பயன்படுத்த முயற்சிக்கும்."
"சரி. நான் தயார்."
"நல்லது. அப்புறம் ஆரம்பிக்கலாம்."
"உங்களுக்கு ஏற்கனவே தெரியும், ஜாவாவில் உள்ளமைக்கப்பட்ட நிலையான சீரியலைசேஷன் கருவிகள் உள்ளன. ஆனால் அவை JSON ஐ ஆதரிக்காது. எனவே, நீங்கள் ஒரு பொருளை JSON இல் வரிசைப்படுத்த வேண்டும் என்றால், எப்படி என்று தெரிந்த பிரபலமான கட்டமைப்புகளில் (நூலகங்கள்) ஒன்றைப் பயன்படுத்தலாம். இதை செய்ய."
"இந்த வெவ்வேறு கட்டமைப்புகளுக்கு என்ன வித்தியாசம்?"
"அவை பொதுவாக அவற்றின் சிக்கலான மட்டத்தில் வேறுபடுகின்றன: அடிப்படைகளை மட்டுமே செய்யக்கூடிய கட்டமைப்புகள் உள்ளன, ஆனால் அவை மிகச் சிறியவை மற்றும் எளிமையானவை. மேலும் பலவற்றைச் செய்யக்கூடிய பெரிய சிக்கலான கட்டமைப்புகள் உள்ளன."
"ஜாக்சன் மிகவும் பிரபலமான கட்டமைப்புகளில் ஒன்றாகும். JSON உடன் எவ்வாறு வேலை செய்வது என்பதைப் பார்க்கும்போது அதை ஒரு உதாரணமாகப் பயன்படுத்துவோம்."
"முதலில், நீங்கள் இந்த கட்டமைப்பை பதிவிறக்கம் செய்து உங்கள் திட்டத்தில் சேர்க்க வேண்டும். இதை நேரடியாக IntelliJ IDEA இல் செய்ய வேண்டும். இந்த இணைப்பைப் பயன்படுத்தி கட்டமைப்பைப் பதிவிறக்கலாம் ."
"முடிந்தது."
"அருமை. பிறகு தொடரலாம்."
"ஜாவா பொருளை JSON ஆக மாற்றுவது, அதை வரிசைப்படுத்துவது போல் எளிதானது. இதைச் செய்ய, ஒரு சிறப்பு ஆப்ஜெக்ட்மேப்பர் வகுப்பு உள்ளது (com.fasterxml.jackson.databind.ObjectMapper)."
"ஒரு வேலை செய்யும் உதாரணத்தை நான் உங்களுக்குக் காட்டுகிறேன், பின்னர் நாங்கள் அதை பகுப்பாய்வு செய்வோம்:"
public static void main(String[] args) throws IOException
{
// Create an object to be serialized into JSON
Cat cat = new Cat();
cat.name = "Missy";
cat.age = 5;
cat.weight = 4;
// Write the result of the serialization to a StringWriter
StringWriter writer = new StringWriter();
// This is the Jackson object that performs the serialization
ObjectMapper mapper = new ObjectMapper();
// And here's the serialization itself: the first argument is where, and the second is what
mapper.writeValue(writer, cat);
// Convert everything written to the StringWriter into a String
String result = writer.toString();
System.out.println(result);
}
@JsonAutoDetect
class Cat
{
public String name;
public int age;
public int weight;
Cat(){}
}
{"name":"Missy", "age":5, "weight":4}
"இது எப்படி வேலை செய்கிறது:"
"வரிகள் 4-7 இல், நாங்கள் ஒரு பூனைப் பொருளை உருவாக்கி அதை தரவுகளுடன் நிரப்புகிறோம்."
"வரி 10 இல், நாம் ஒரு ரைட்டர் பொருளை உருவாக்குகிறோம், அங்கு பொருளின் JSON-ஸ்ட்ரிங் பிரதிநிதித்துவத்தை எழுதுவோம்."
"வரி 13 இல், நாங்கள் ஒரு ObjectMapper பொருளை உருவாக்குகிறோம், அது அனைத்து வரிசைப்படுத்தலையும் செய்யும்."
"வரி 16 இல், பூனைப் பொருளின் JSON பிரதிநிதித்துவத்தை எழுத்தாளருக்கு எழுதுகிறோம் ."
"வரிகள் 19-20 இல், முடிவை திரையில் காண்பிக்கிறோம்."
"எல்லாமே மிகவும் எளிமையானதாகத் தெரிகிறது. ஜாவாவில் நேட்டிவ் சீரியலைஸ் விட கடினமாக இல்லை."
"டீரியலைசேஷன் எப்படி இருக்கும்?"
"கிட்டத்தட்ட அதேதான், இன்னும் கொஞ்சம்:"
public static void main(String[] args) throws IOException
{
String jsonString = "{ \"name\":\"Missy\", \"age\":5, \"weight\":4}";
StringReader reader = new StringReader(jsonString);
ObjectMapper mapper = new ObjectMapper();
Cat cat = mapper.readValue(reader, Cat.class);
}
@JsonAutoDetect
class Cat
{
public String name;
public int age;
public int weight;
Cat() { }
}
"இது இன்னும் எளிதானது. நாம் ObjectMapper ஐ எடுத்து , அதை JSON உடன் ஒரு சரம் அல்லது StringReader ஐ அனுப்புகிறோம், அத்துடன் டீரியலைஸ் செய்ய வேண்டிய பொருளின் வகுப்பையும் அனுப்புகிறோம். பிறகு நாம் readValue முறை என்று அழைக்கிறோம் , மேலும் வெளியீட்டாக நாம் ஒரு ஆயத்த ஜாவா பொருளைப் பெறுகிறோம். அனைத்து தரவுகளும்."
"சரி, அது ஜாவாவில் டீரியலைசேஷன் போன்றது."
"கிட்டத்தட்ட. JSON இலிருந்து வரிசைப்படுத்தப்பட்ட அல்லது சீரழிக்கப்பட்ட பொருட்களின் மீது பல தேவைகள் உள்ளன:"
" 1) புலங்கள் காணப்பட வேண்டும்: அவை பொதுவில் இருக்க வேண்டும் அல்லது பெறுபவர்கள் மற்றும் செட்டர்களைக் கொண்டிருக்க வேண்டும்"
" 2) ஒரு இயல்புநிலை கட்டமைப்பாளர் இருக்க வேண்டும் (அளவுருக்கள் இல்லாத ஒன்று)"
"நான் பார்க்கிறேன். அது ஒன்றும் ஆச்சரியமில்லை. ஆனால் ஜாவா எல்லாவற்றையும் தொடர்கிறது, தனியார் துறைகள் கூட."
"சரி, அது ஜாவா. இது மறைக்கப்பட்ட தரவுகளுக்கான அணுகலைக் கொண்டுள்ளது. உங்களிடமிருந்து நீங்கள் மறைக்க முடியாது."
"இங்கே மூன்றாவது அம்சம் உள்ளது. கேட் வகுப்பில் @JsonAutoDetect சிறுகுறிப்பை நீங்கள் கவனித்தீர்கள் என்று நம்புகிறேன்?"
"ஆமாம். அது என்னன்னு கேட்கத்தான் இருந்தேன்."
"இது ஒரு சிறுகுறிப்பு: ஜாக்சன் கட்டமைப்பிற்கான வீட்டு பராமரிப்புத் தகவல். சரியான சிறுகுறிப்புகளைப் பயன்படுத்துவதன் மூலம், JSON இல் வரிசைப்படுத்துதலின் முடிவுகளின் மீது உங்களுக்கு நிறைய நெகிழ்வான கட்டுப்பாடு உள்ளது."
"கூல்! என்ன வகையான சிறுகுறிப்புகள் உள்ளன?"
"சில எடுத்துக்காட்டுகள் இங்கே:"
சிறுகுறிப்பு | விளக்கம் |
---|---|
@JsonAutoDetect | ஒரு வகுப்பின் முன் வைக்கப்பட்டது. ஒரு வகுப்பை JSON இல் வரிசைப்படுத்தத் தயார் எனக் குறிக்கும். |
@Json புறக்கணிக்கவும் | ஒரு சொத்து முன் வைக்கப்பட்டது. தொடரின் போது சொத்து புறக்கணிக்கப்படும். |
@JsonProperty | ஒரு சொத்து அல்லது பெறுபவர் அல்லது செட்டர் முன் வைக்கப்பட்டது. வரிசைப்படுத்தலின் போது வேறு புலப் பெயரைக் குறிப்பிட உங்களை அனுமதிக்கிறது. |
@JsonWriteNullProperties | ஒரு வகுப்பின் முன் வைக்கப்பட்டது. பூஜ்யமாக இருக்கும் பொருள் புலங்கள் புறக்கணிக்கப்படாது. |
@JsonPropertyOrder | ஒரு வகுப்பின் முன் வைக்கப்பட்டது. வரிசைப்படுத்தலின் போது புல வரிசையைக் குறிப்பிட உங்களை அனுமதிக்கிறது. |
"எவ்வளவு சுவாரசியம்! இன்னும் இருக்கிறதா?"
"பல உள்ளன. ஆனால் நாங்கள் இப்போது அவற்றை மறைக்க மாட்டோம். இப்போது நமது முதல் உதாரணத்தை சற்று மறுவேலை செய்வோம்:"
public static void main(String[] args) throws IOException
{
Cat cat = new Cat();
cat.name = "Missy";
cat.age = 5;
cat.weight = 4;
StringWriter writer = new StringWriter();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(writer, cat);
String result = writer.toString();
System.out.println(result);
}
@JsonAutoDetect
class Cat
{
@JsonProperty("alias")
public String name;
public int age;
@JsonIgnore
public int weight;
Cat() {
}
}
{"age":5, "alias":"Missy"}
"குறியீடு அப்படியே உள்ளது, ஆனால் நான் சிறுகுறிப்புகளை மாற்றினேன்: பெயர் புலத்திற்கு வேறு பெயரைக் குறிப்பிட்டுள்ளேன்: மாற்றுப்பெயர். எடைப் புலத்தையும் புறக்கணிப்பு எனக் குறித்தேன், இது JSON பொருளின் மாற்றத்தை ஏற்படுத்தியது."
"அப்படியே எல்லாத்தையும் கஸ்டமைஸ் பண்ணிக்கறது நல்லது. கண்டிப்பா இது உபயோகமா இருக்கும்னு நினைக்கிறேன்."
"மேலும் டீரியலைசேஷன் இதனுடன் எவ்வாறு செயல்படுவது என்பதை புரிந்து கொள்ளுமா? JSON இலிருந்து ஒரு ஜாவா பொருளுக்கு டீரியலைஸ் செய்யும் போது, மாற்றுப் புலத்தின் மதிப்பு பூனை பொருளின் பெயர் புலத்தில் எழுதப்படும்?"
"ஆம், டீரியலைசேஷன் வேலை செய்யும். அது புத்திசாலித்தனம்."
"அப்புறம் என்ன சந்தோஷப்படறது."
"இந்த சுவாரஸ்யமான பாடத்திற்கு நன்றி, எல்லி."
GO TO FULL VERSION