Java在表中显示DynamoDB扫描属性值

ttcibm8c  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(121)

我正在尝试扫描DynamoDB表,然后在表中显示用户选择的字段。问题是,如果数据以AttributeValues返回,我怎么能做到这一点,因为不是所有的值都是字符串,而且我事先不知道每个值是什么类型。
我的代码:

ScanRequest request =
            ScanRequest
            .builder()
            .tableName(tableName))
            .build();

    ScanIterable response = client.scanPaginator(request);
    List<Map<String, AttributeValue>> data = new ArrayList<>();

    for (ScanResponse page : response) {
        for (Map<String, AttributeValue> item : page.items()) {
            data.add(item);
        }
    }

然后得到这些值:

for (Map<String, AttributeValue> map : items) {
        for (Map.Entry<String, AttributeValue> entry : map.entrySet()) {
            //get the entry.getValue() and append it to a string
        }
    }

如果我使用:

entry.getValue().toString()

我将得到一个包含属性值类型和值的字符串,例如"N":'127'如果我使用:

entry.getValue().s()

当类型不是"S"时,我将获得空值

1zmg4dgp

1zmg4dgp1#

在这种情况下,由于您不想处理DynamoDB JSON,因此应该使用Document Interface
许多AWS SDK提供文档接口,允许您在表和索引上执行数据平面操作(创建、读取、更新、删除)。使用文档接口,您无需指定数据类型描述符。数据类型由数据本身的语义隐含。这些AWS SDK还提供了在JSON文档与原生Amazon DynamoDB数据类型之间轻松转换的方法。

相关问题