0

次のような JSON 文字列があります。

{
  "1": {
    "entity_id":"1",
    "status":"canceled"
  },
  "2": {
    "entity_id":"2",
    "status":"pending"
  }
}

これを逆シリアル化するときに使用する正しい設定を見つけるのに苦労しています。"1"上記のと"2"idをマッピングしているように見えるものに出くわしました。

私のオブジェクトマッパーは次のようになります。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, true);
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

私はそれをマップするためにあらゆる種類のクラスを試しましたが、次の行を使用するとそれらのどれも機能しませんでした:

XXX jsonObject = mapper.readValue(json, XXX.class);

XXXクラスがどのように見えるべきかについて何か提案はありますか?

4

1 に答える 1

0

解決策は、次のように json をマップにマップすることでした。

Map<String, Object> map = mapper.readValue(message, new TypeReference<Map<String, Object>>() {}); 

実際のコードでは、Object を、entity_id や status などのフィールドをマップする Java クラスに置き換えました。

于 2012-12-05T15:52:52.590 に答える