当前位置: 首页 > 面试题库 >

将LinkedHashMap转换为复杂对象

糜帅
2023-03-14
问题内容

我有一个应用程序,该应用程序使用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>not以外List<SomeObject>!这是杰克逊的标准行为,这并不是正在发生的错误。

所以现在这导致了一个问题。我的代码库认为它处理a,List<SomeObject>但现实是它处理a
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’。


问题答案:

您可以ObjectMapper.convertValue()按值使用,也可以对整个列表使用。但是您需要知道要转换为的类型:

POJO pojo = mapper.convertValue(singleObject, POJO.class);
// or:
List<POJO> pojos = mapper.convertValue(listOfObjects, new TypeReference<List<POJO>>() { });

这在功能上与您做的相同:

byte[] json = mapper.writeValueAsBytes(singleObject);
POJO pojo = mapper.readValue(json, POJO.class);

但避免将数据实际序列化为JSON,而是使用内存中事件序列作为中间步骤。



 类似资料:
  • 某个物体可能看起来像这样: 另一个物体可能是这样的: 这很好,因为对象被封送,没有问题,并以JSON字符串的形式存储在DB中。

  • 我正在尝试将复杂的实体转换为Dto。我想从DTO中删除实体中的一些值。 我的实体看起来像这样(为了简单起见,省略了实体的大部分): 我找到了一个对简单实体非常有效的解决方案:将实体转换为数据。如果我采纳了自定义拦截器的建议,删除id或整个item属性就可以了。 我尝试了两种方法来定义我的DTO: < li >它仅返回id和整个项目。 现在的问题是我只想删除 item 属性中的某些值。例如,私有字段

  • 我已将此JSON转换为Hashmap http://www.mocky.io/v2/5d0dc72d3400008c00ca4a62 我有嵌套的Hashmap,我想把它转换成ArrayList 我想从获取所有数据并添加到列表中。我还希望hashmap的密钥也将作为指南导入列表中。 这是银行舱 这是银行名单课程 我试过的 但我不明白为什么会有例外 如果可以的话,请给我推荐其他算法

  • 我有一个JSF应用程序,除了调用ManagedBean中以对象为参数的方法外,其他一切都运行得很好: 在SCONTR中: 所有没有自己定义的对象的方法都可以工作(例如,映射、字符串、列表等),访问xhtml中的对象甚至子对象就像一个魅力。 但是,调用此deletePrivilege会导致: 因此,出于某种原因,JSF无法将LinkedHashMap自动转换回用于呈现页面的类的实例。 faces-c

  • 问题内容: 我没主意了。现在,我有一天在Google上进行了谷歌搜索,但仍然找不到我的问题的任何有用答案。 到目前为止,我一直尝试使用原始SQL,但是没有运气。 使用此原始SQL查询时,返回的结果为零,但是在其中运行相同的查询时,返回正确的结果。 我进一步发现,将查询打印到终端时,它不能正确处理该子句。 打印时我的查询如下所示: 如何将此SQL查询转换为SQLAlchemy 我的桌子看起来像这样:

  • 问题内容: 我正在使用Jongo与Mongo一起工作,当我执行查询时会收到结果。 问题是,如果json是content ,它将不是from的唯一方法。 我如何获得原件? 我没有要映射的地图,也不是创建类的解决方案,这就是为什么我使用 问题答案: 如果您可以访问某些JSON库,那似乎就是这样。 如果使用org.json库,请使用: 如果是Gson,请使用@hellboy提到的方法: