1

Jsonを逆シリアル化するためにjacksonを使用しています。私は大きなjsonドキュメントを読んでブロックを引き出し、ジャクソンにそのブロックを取り、jsonに一致するようにJavaで作成したオブジェクト(ネストされた配列があるため、実際にはいくつかのオブジェクト)に逆シリアル化するように指示しています。

逆シリアル化に使用するコードは

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 を解析するにはどうすればよいですか?

4

1 に答える 1

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);  
       ....
   }
于 2012-04-11T21:22:50.100 に答える