Map JSON string array to List<String> using Jackson

The TypeFactory in Jackson allows to map directly to collections and other complex types:

String json = "[ \"abc\", \"def\" ]";
ObjectMapper mapper = new ObjectMapper();

List<String> list = mapper.readValue(json, TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));

You could define a wrapper class as following:

public class Wrapper {

    private List<String> values;

    // Default constructor, getters and setters omitted
}

Then use:

Wrapper wrapper = mapper.readValue(json, Wrapper.class);
List<String> values = wrapper.getValues();

If you want to avoid a wrapper class, try the following:

JsonNode valuesNode = mapper.readTree(json).get("values");

List<String> values = new ArrayList<>();
for (JsonNode node : valuesNode) {
    values.add(node.asText());
}

Tags:

Json

Jackson