@JsonDeserialize एनोटेशन जेएसओएन को जावा ऑब्जेक्ट में deserializing जबकि कस्टम deserializer घोषित करने के लिए प्रयोग किया जाता है। हम StdDeserializer . का विस्तार करके एक कस्टम deserializer लागू कर सकते हैं एक सामान्य प्रकार वाला वर्ग कर्मचारी और deserialize() . को ओवरराइड करने की आवश्यकता है StdDeserializer . की विधि कक्षा।
सिंटैक्स
@Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER})@Retention(value=RUNTIME)public @interface JsonDeserialize
नीचे दिए गए प्रोग्राम में, हम @JsonDeserialize का उपयोग करके एक कस्टम deserializer लागू कर सकते हैं एनोटेशन
उदाहरण
आयात करें। jackson.databind.deser.std.*;सार्वजनिक वर्ग JsonDeSerializeAnnotationTest { सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) JsonProcessingException, IOException {कर्मचारी emp =नया कर्मचारी (115, "आदित्य"); ऑब्जेक्टमैपर मैपर =नया ऑब्जेक्टमैपर (); स्ट्रिंग jsonString =mapper.writeValueAsString (emp); emp =mapper.readValue (jsonString, Employee.class); System.out.println (एम्प); }}// CustomDeserializer classclass CustomDeserializer StdDeserializer को बढ़ाता है { public CustomDeserializer(Class t) { super(t); } सार्वजनिक CustomDeserializer() { यह (कर्मचारी वर्ग); } @Override सार्वजनिक कर्मचारी deserialize(JsonParser jp, DeserializationContext dc) IOException, JsonProcessingException {int id =0; स्ट्रिंग नाम =शून्य; जेसनटोकन वर्तमान टोकन =शून्य; जबकि ((currentToken =jp.nextValue ())! =नल) {स्विच (currentToken) {केस VALUE_NUMBER_INT:if(jp.getCurrentName().equals("id")) { id =jp.getIntValue(); } टूटना; मामला VALUE_STRING:स्विच (jp.getCurrentName ()) {केस "नाम":नाम =jp.getText (); टूटना; डिफ़ॉल्ट:विराम; } टूटना; डिफ़ॉल्ट:विराम; } } नया कर्मचारी लौटाएं (आईडी, नाम); }}// कर्मचारी वर्ग@JsonDeserialize(=CustomDeserializer.class का उपयोग करके) वर्ग कर्मचारी {निजी इंट आईडी; निजी स्ट्रिंग नाम; सार्वजनिक कर्मचारी (इंट आईडी, स्ट्रिंग नाम) {this.id =id; यह नाम =नाम; } सार्वजनिक int getId () {रिटर्न आईडी; } सार्वजनिक स्ट्रिंग getName () {वापसी का नाम; } @ ओवरराइड पब्लिक स्ट्रिंग टूस्ट्रिंग() {स्ट्रिंगबिल्डर एसबी =नया स्ट्रिंगबिल्डर ("आईडी:")। संलग्न करें (यह। आईडी)। संलग्न करें ("\ n नाम:")। संलग्न करें (this.name); वापसी sb.toString (); }} आउटपुट
आईडी:115नाम:आदित्य