2012-04-04 17 views
1

im Jsonを使用してJsonを非直列化します。私は大きなjsonドキュメントを読んでブロックを引っ張って、そのブロックを取ってジャンクにマッチさせるためにjavaで作成したオブジェクト(実際にはいくつかのオブジェクトがネストされた配列として)に逆シリアル化するようにjacksonに伝えています。jsonを配列で逆シリアル化する

デシリアライズするために使用してコードイム問題が時々

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

などのハッシュと時々配列であるブロックの値が存在している

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

ある

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

したがって、fooObjectでは、独自のオブジェクトを持つaddWidgetStrategyを処理する必要があります。 fooObjectに私はそれが配列

をデシリアライズしようとするまで、私は

public List<addWidgetStrategy> addWidgetStrategy; 

を置く場合は、配列のためだけの作品とするときにその1つだけのハッシュ吹く上記作品

public addWidgetStrategy addWidgetStrategy; 

を置く場合

配列または単一ハッシュに関係なく、同じJson要素addWidgetStrategyをどのように解析できますか?

それがあるべきアレイの場合

答えて

2

JsonNode jsonNode = mapper.readTree(json); 
    if (jsonNode.isArray()) { 
     fooObject[] newFoo = mapper.readValue(jsonNode,fooObject[].class); 
     ... 
    } else { 
     fooObject newFoo = mapper.readValue(jsonNode,fooObject.class); 
     .... 
    } 
:あなたはこのようにそれを読むことができ

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

関連する問題