如何解决通过 DynamoDbMapper 从 Dynamodb 返回动态对象
我使用 dynamodb 来存储数据,它可以有各种数据类型,如字符串、数字和 json。地图可以根据 id 有不同的键,因此,它的结构是事先不知道的。
有没有办法通过 Dynamodbmapper 检索它?对于其他属性,String
、Long
之类的 Java 数据类型有效,但对于 Map
或更确切地说是 json
,我最终会遇到解析错误。我尝试过像 JsonNode
是否有可能做到这一点的注释或 java 数据类型?或者我应该回滚到原始的 dynamodb 客户端而不是使用映射器?
解决方法
使用 DynamoDB 增强型客户端是与 DynamoDB 交互的绝佳方式,如下所述:
Introducing enhanced DynamoDB client in the AWS SDK for Java v2
(如果您使用的是 Java V1,则应考虑迁移到 V2 和增强客户端,如本链接中所述。)
然而,正如您发现的那样,在使用此功能时,如果了解数据结构并且您可以创建具有映射到表列的数据成员的 Java 类,则效果会更好。
例如,假设您正在处理客户数据。您可以像这样创建一个 Java 类:
new_data = []
with open("data.csv","r") as f:
# f.readline() if the csv has a header (skips first line)
for line in f:
split_kv = line.split(',')
split_v = split_kv[1].split(';')
for v in split_v:
new_data.append((split_kv[0],v))
如果您不了解高级数据结构(即您不了解 Customer 表),那么使用 Enhanced Client 效率不高。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。