109 votes

Comment analyser une chaîne JSON d'un tableau à l'aide de Jackson

J'ai un String avec la valeur suivante:

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

Et la classe suivante:

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

Et je veux l'analyser pour un List<SomeClass> ou SomeClass[]

Qui est la façon la plus simple de le faire à l'aide de Jackson ObjectMapper?

201voto

mmutilva Points 5226

J'ai finalement obtenu:

List<SomeClass> someClassList =
    mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

99voto

StaxMan Points 34626

L'autre réponse est correcte, mais pour être complet, voici d'autres moyens:

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

4voto

Didasko Points 47

L'exemple complet d'un tableau. Remplacer "constructArrayType()" par "constructCollectionType()" ou tout autre type dont vous avez besoin.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X