2013-08-27 43 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")加入編輯