के साथ जेनेरिक प्रकार का Deserializing मैं POJO के deserialize करने के लिए जैक्सन का उपयोग करने वाली कक्षा बनाने की कोशिश कर रहा हूं।जैक्सन
यह इस तरह दिखता है ...
public class DeserialiserImp<T> implements Deserialiser<T> {
protected ObjectMapper objectMapper = new ObjectMapper();
@Override
public T get(String content, Class clazz) throws IOException {
return (T) objectMapper.readValue(content, clazz);
}
@Override
public List<T> getList(String content, Class clazz) throws IOException {
return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
}
}
मैं इस कार्यान्वयन के बारे में 2 प्रश्न हैं।
पहला यह है कि मैं वर्ग प्रकार को विधियों में गुजर रहा हूं ताकि ऑब्जेक्टमैपर उस प्रकार को जानता हो जिसे deserialize करना चाहिए। जेनिक्स का उपयोग कर एक बेहतर तरीका है?
इसके अलावा विधि प्राप्त करने में मैं ऑब्जेक्ट मैपर से टी पर लौटाई गई वस्तु कास्टिंग कर रहा हूं। ऐसा करने का विशेष रूप से बुरा तरीका लगता है क्योंकि मुझे यहां टी डालना है और फिर मुझे ऑब्जेक्ट प्रकार को विधि से भी डालना है इसे बुला रहा है
मैं इस परियोजना में रोबोगुइस का उपयोग कर रहा हूं, इसलिए यह अच्छा होगा अगर मैं इंजेक्शन के माध्यम से प्रकार बदल सकता हूं और उस ऑब्जेक्ट को एनोटेट कर सकता हूं जो जेनेरिक प्रकार को वापस करने की आवश्यकता है। मैंने TypeLiteral पढ़ा और यह सोचकर कि क्या यह इस समस्या को हल कर सकता है?
देखें http://stackoverflow.com/questions/17400850/is-jackson-really-unable-to-deserialize-json-into-a-generic-type – lisak