2013-08-27 3 views
0

je créer un JSON avec Jackson à partir de cette classe:erreur Deserialize avec jackson JSON dans le cas de la liste en java

public class One { 
    public long param; 

    public List<Two> two; 

    public static class Two{ 
     public long param; 
     public List<Short> param2; 
    } 
} 

J'ai défini deux constructeurs pour chaque classe et je l'utilise pour la création du objets qui sont écrits plus tard sur le fichier json. Le résultat est (JSON valide):

[{"param":1,"Two":[{"param":4,"param2":[1,2,3]},{"param":5,"parma2":[4,5,6]}]},{"param":2,"Two":[{"param":6,"param2":[1,2,3]}]}] 

Maintenant, je voudrais lire et charger les paramètres et je définir:

mapper.configure(Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); //tried with and without 
    JsonFactory f = new JsonFactory(); 
    JsonParser jp; 
jp = f.createJsonParser(FILE); 
    jp.nextToken(); 
    while (jp.nextToken() == JsonToken.START_OBJECT) { 
     mapper.readValue(jp, One.class); 
    } 
    jp.close(); 

J'ai cette erreur:

Can not deserialize instance of json.One$Two out of START_ARRAY 

Répondre

1

Je trouvé la solution.

charge du fichier JSON:

List<One> myObjects = new ArrayList<One>(); 
myObjects = mapper.readValue(FILE, mapper.getTypeFactory().constructCollectionType(List.class, One.class)); 

Le code de la classe est édité en ajoutant que @JsonProperty("Two"):

public class One { 
    public long param; 
    @JsonProperty("Two") 
    public List<Two> two; 

    public static class Two{ 
     public long param; 
     public List<Short> param2; 
    } 
} 
Questions connexes