2013-08-27 40 views
0

名单的情况下,我必须创建基于此类杰克逊JSON:与杰克逊JSON反序列化错误在Java中

public class One { 
    public long param; 

    public List<Two> two; 

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

我已经定义了两个构造为每个类,我用它来创建的以后写在json文件上的对象。结果是(有效的JSON):

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

现在我想阅读并加载参数和我定义:

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

我有这样的错误:

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

回答

1

我有找到了解决方案。 JSON文件的

负载:

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

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

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

在类的代码仅由@JsonProperty("Two")加入编辑