serialize example java json jackson

java - example - Cómo analizar una cadena JSON en una matriz con Jackson



objectmapper java (3)

Tengo una String con el siguiente valor:

[{"key1":"value11", "key2":"value12"},{"key1":"value21", "key2":"value22"}]

Y la siguiente clase:

public class SomeClass { private String key1; private String key2; /* ... getters and setters omitted ...*/ }

Y quiero analizarlo en una List<SomeClass> o SomeClass[]

¿Cuál es la forma más sencilla de hacerlo utilizando Jackson ObjectMapper ?


El ejemplo completo con una matriz. Reemplace " constructArrayType () " por " constructCollectionType () " o cualquier otro tipo que necesite.

import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory; public class Sorting { private String property; private String direction; public Sorting() { } public Sorting(String property, String direction) { this.property = property; this.direction = direction; } public String getProperty() { return property; } public void setProperty(String property) { this.property = property; } public String getDirection() { return direction; } public void setDirection(String direction) { this.direction = direction; } public static void main(String[] args) throws JsonParseException, IOException { final String json = "[{/"property/":/"title1/", /"direction/":/"ASC/"}, {/"property/":/"title2/", /"direction/":/"DESC/"}]"; ObjectMapper mapper = new ObjectMapper(); Sorting[] sortings = mapper.readValue(json, TypeFactory.defaultInstance().constructArrayType(Sorting.class)); System.out.println(sortings); } }


Finalmente lo tengo:

ObjectMapper objectMapper = new ObjectMapper(); TypeFactory typeFactory = objectMapper.getTypeFactory(); List<SomeClass> someClassList = objectMapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));


La otra respuesta es correcta, pero para completar, aquí hay otras formas:

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { }); SomeClass[] array = mapper.readValue(jsonString, SomeClass[].class);