我有一个应用程序,使用Jackson将我的复杂对象序列化为JSON并将其存储在DynamoDB中。
例如,我要序列化的对象可能如下所示:
private String aString;
private List<SomeObject> someObjectList;
其中SomeObject可能长这样:
private int anInteger;
private SomeOtherObject;
而 SomeOtherObject 可能是这个样子:
private long aLong;
private float aFloat;
这个对象可以很好地序列化并作为JSON字符串存储在数据库中。
但当从DynamoDB检索数据时,Jackson会自动检索JSON并将其转换回来...除了'someObjectList'会被返回为List<LinkedHashMap>
而不是List<SomeObject>
!对于Jackson来说,这是标准行为,这不是错误。
现在遇到了一个问题。我的代码库认为它正在处理List<SomeObject>
,但实际上它正在处理List<LinkedHashMap>
!我的问题是如何将LinkedHashMap还原成'SomeObject'。显然,这是一个手动的过程,但我的意思是我甚至不能提取值。
如果我这样做:
for (LinkedHashMap lhm : someObjectList) {
// Convert the values back
}
我遇到了编译错误,提示我someObjectList的类型为'SomeObject'而非LinkedHashMap。
如果我这样做:
for (SomeObject lhm : someObjectList) {
// Convert the values back
}
我收到一个运行时错误,告诉我LinkedHashMap无法转换为'SomeObject'。