How to use Jackson to deserialise an array of objects How to use Jackson to deserialise an array of objects java java

How to use Jackson to deserialise an array of objects


First create a mapper :

import com.fasterxml.jackson.databind.ObjectMapper;// in play 2.3ObjectMapper mapper = new ObjectMapper();

As Array:

MyClass[] myObjects = mapper.readValue(json, MyClass[].class);

As List:

List<MyClass> myObjects = mapper.readValue(jsonInput, new TypeReference<List<MyClass>>(){});

Another way to specify the List type:

List<MyClass> myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));


From Eugene Tskhovrebov

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

This solution seems to be the best for me.


For Generic Implementation:

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);}