通过 DynamoDbMapper 从 Dynamodb 返回动态对象

问题描述

我使用 dynamodb 来存储数据,它可以有各种数据类型,如字符串、数字和 json。地图可以根据 id 有不同的键,因此,它的结构是事先不知道的。

有没有办法通过 Dynamodbmapper 检索它?对于其他属性StringLong 之类的 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 效率不高。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...