Jacksonを使用してDynamoDBにデータを保存し、複雑なオブジェクトをJSONにマーシャリングするアプリケーションがあります。
たとえば、マーシャリングしているオブジェクトは次のようになります。
private String aString;
private List<SomeObject> someObjectList;
SomeObjectは次のようになります。
private int anInteger;
private SomeOtherObject;
およびSomeOtherObjectは次のようになります。
private long aLong;
private float aFloat;
これは問題ありません。オブジェクトは問題なくマーシャリングされ、JSON文字列としてDBに保存されます。
DynamoDBからデータを取得するときが来ると、Jacksonは自動的にJSONを取得して変換し直します...ただし、「someObjectList」は!としてではList<LinkedHashMap>
なくとして返されます。List<SomeObject>
これはジャクソンの標準的な動作であり、これが起こっているのは間違いではありません。
だから今、これは問題につながります。私のコードベースは、それがを処理していると考えていますList<SomeObject>
が、実際には、その処理はList<LinkedHashMap>
!私の質問は、LinkedHashMapを「SomeObject」に戻す方法です。明らかにこれは手動のプロセスですが、私が言いたいのは、値を抽出することさえできないということです。
私がこれを行う場合:
for (LinkedHashMap lhm : someObjectList) {
// Convert the values back
}
someObjectListがLinkedHashMapではなく「SomeObject」タイプであるというコンパイルエラーが発生します。
私がこれを行う場合:
for (SomeObject lhm : someObjectList) {
// Convert the values back
}
LinkedHashMapを「SomeObject」にキャストできないことを示すランタイムエラーが発生します。