java - ऑब्जेक्ट्स की एक सरणी deserialise करने के लिए जैक्सन का उपयोग कैसे करें




json jackson (4)

जैक्सन डेटा बाध्यकारी दस्तावेज इंगित करता है कि जैक्सन "सभी समर्थित प्रकारों के Arrays" deserialising का समर्थन करता है, लेकिन मैं इसके लिए सटीक वाक्यविन्यास नहीं समझ सकता।

एक ही वस्तु के लिए मैं यह करूँगा:

//json input
{
    "id" : "junk",
    "stuff" : "things"
}

//Java
MyClass instance = objectMapper.readValue(json, MyClass.class);

अब एक सरणी के लिए मैं यह करना चाहता हूं:

//json input
[{
    "id" : "junk",
    "stuff" : "things"
},
{
    "id" : "spam",
    "stuff" : "eggs"
}]

//Java
List<MyClass> entries = ?

किसी को पता है कि एक जादू गायब आदेश है या नहीं? अगर नहीं तो फिर उपाय क्या है?


जेनेरिक कार्यान्वयन के लिए:

public static <T> List<T> parseJsonArray(String json,
                                         Class<T> classOnWhichArrayIsDefined) 
                                         throws IOException, ClassNotFoundException {
   ObjectMapper mapper = new ObjectMapper();
   Class<T[]> arrayClass = (Class<T[]>) Class.forName("[L" + classOnWhichArrayIsDefined.getName() + ";");
   T[] objects = mapper.readValue(json, arrayClass);
   return Arrays.asList(objects);
}

पहले ऑब्जेक्ट रीडर का एक उदाहरण बनाएं जो थ्रेड-सुरक्षित है।

ObjectMapper objectMapper = new ObjectMapper();
ObjectReader objectReader = objectMapper.reader().forType(new TypeReference<List<MyClass>>(){});

फिर इसका इस्तेमाल करें:

List<MyClass> result = objectReader.readValue(inputStream);

यूजीन Tskhovrebov से

List<MyClass> myObjects = Arrays.asList(mapper.readValue(json, MyClass[].class))

यह समाधान मेरे लिए सबसे अच्छा प्रतीत होता है


try {
    ObjectMapper mapper = new ObjectMapper();
    JsonFactory f = new JsonFactory();
    List<User> lstUser = null;
    JsonParser jp = f.createJsonParser(new File("C:\\maven\\user.json"));
    TypeReference<List<User>> tRef = new TypeReference<List<User>>() {};
    lstUser = mapper.readValue(jp, tRef);
    for (User user : lstUser) {
        System.out.println(user.toString());
    }

} catch (JsonGenerationException e) {
    e.printStackTrace();
} catch (JsonMappingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}





jackson