1077 votes

Comment utiliser Jackson pour deserialise un tableau d’objets

La documentation de liaison de données jackson (http://jackson.codehaus.org/DataBindingDeepDive) indique que Jackson prend en charge la désérialisation des "tableaux de tous les types supportés" mais je ne peux pas trouver la syntaxe exacte pour cela.

Pour un seul objet, je ferais ceci:

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

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

Maintenant, pour un tableau, je veux faire ceci:

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

//Java
List<MyClass> entries = ?
 

Quelqu'un sait s'il y a une commande magique manquante? Si non, quelle est la solution?

Merci beaucoup.

2278voto

Programmer Bruce Points 16306

Comme tableau:

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

Comme la liste:

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

Une autre façon de spécifier le type de liste:

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

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