2012-04-04 100 views
1

即時通訊使用傑克遜反序列化一些Json。我正在通過一個大的json文檔讀取數據,並提取塊並告訴jackson將該塊取出並反序列化爲一個我創建的對象(實際上是嵌套數組中的幾個對象)以匹配json。反序列化json與數組

使用反序列化代碼IM是

fooObject newFoo = mapper.readValue(newNode,fooObject.class); 

的問題是有塊中的值,該值是有時

addWidgetStrategy={"get":2,"spend":6,"textLabel":"bikes"} 

這樣的散列,並且有時陣列

addWidgetStrategy=[{"get":1.5,"spend":3,"textLabel":"thursday"},{"get":3,"spend":5,"textLabel":"tuesday"}] 

所以在fooObject中,我需要處理具有自己對象的addWidgetStrategy。如果fooObject我把

public addWidgetStrategy addWidgetStrategy; 

上述工作,直到它試圖反序列化數組

如果我把

public List<addWidgetStrategy> addWidgetStrategy; 

它只是對數組和炸燬時,它只是一個單一的哈希

如何解析相同的Json元素addWidgetStrategy,而不管它是一個數組還是一個散列?

回答

2

對於數組應該是:

fooObject[] newFoo = mapper.readValue(newNode,fooObject[].class); 

你可以這樣閱讀:

JsonNode jsonNode = mapper.readTree(json); 
    if (jsonNode.isArray()) { 
     fooObject[] newFoo = mapper.readValue(jsonNode,fooObject[].class); 
     ... 
    } else { 
     fooObject newFoo = mapper.readValue(jsonNode,fooObject.class); 
     .... 
    }