2012-08-03 21 views
42

मैं जानना चाहता हूं कि @JsonTypeInfo एनोटेशन इंटरफेस के लिए उपयोग किया जा सकता है या नहीं। मेरे पास कक्षाओं का सेट है जिसे धारावाहिक और deserialized किया जाना चाहिए।जैक्सन एनोटेशन में पॉलिमॉर्फिज्म: @ जेसन टाइपइन्फो उपयोग

यहां मैं जो करने की कोशिश कर रहा हूं वह यहां है। मेरे पास दो कार्यान्वयन वर्ग Sub1, Sub2MyInt लागू कर रहे हैं। कुछ मॉडल वर्गों में कार्यान्वयन प्रकारों के लिए इंटरफ़ेस संदर्भ होता है। मैं वस्तुओं deserialize चाहते हैं बहुरूपता के आधार पर

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT) 
@JsonSubTypes({ 
    @Type(name="sub1", value=Sub1.class), 
    @Type(name="sub2", value=Sub2.class)}) 
public interface MyInt{ 
} 

@JsonTypeName("sub1") 
public Sub1 implements MyInt{ 
} 

@JsonTypeName("sub2") 
public Sub2 implements MyInt{ 
} 

मैं निम्नलिखित JsonMappingException:

अप्रत्याशित टोकन (END_OBJECT), उम्मीद FIELD_NAME: जरूरत JSON स्ट्रिंग उस प्रकार आईडी

शामिल
+0

आपने यह देखा? http://jackson-users.ning.com/forum/topics/mapper-not-include-type-information-when-serializing-object-why?xg_source=activity क्या आपके पास किसी भी प्रकार की सूची है जैसा कि दूसरे में चर्चा की गई है थ्रेड? –

+1

मुझे लगता है कि आपको थोड़ा और कोड दिखाने की आवश्यकता है (कैसे क्रमबद्धता, deserialization किया जाता है), साथ ही जेएसओएन का उत्पादन/उपभोग किया जा रहा है। – StaxMan

उत्तर

40

@ जेसनसब टाइप्स। टाइप के पास एक मूल्य और नाम होना चाहिए,

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT, property="type") 
    @JsonSubTypes({ 

     @JsonSubTypes.Type(value=Dog.class, name="dog"), 

     @JsonSubTypes.Type(value=Cat.class, name="cat") 

    }) 

उपclass में, नाम कहने के लिए @JsonTypeName("dog") का उपयोग करें।

मूल्य 'कुत्ते' और 'बिल्ली' 'प्रकार' नाम की संपत्ति में सेट किए जाएंगे।

+0

प्रतिक्रिया के लिए धन्यवाद। हालांकि, मुझे अभी भी वही त्रुटि मिलती है। क्या आपको लगता है कि मुझे @JsonTypeInfo में कुछ भी बदलना चाहिए? – Chris

+2

क्या किसी को पता है कि क्या JsonTypeInfo इंटरफ़ेस पर लागू किया जा सकता है? – Chris

+0

समस्या आपके इनपुट जेसन स्ट्रिंग के साथ हो सकती है। क्या आप कुछ पोस्ट करने की कोशिश कर रहे हैं? –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^