我正在尝试扫描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"时,我将获得空值
1条答案
按热度按时间1zmg4dgp1#
在这种情况下,由于您不想处理DynamoDB JSON,因此应该使用Document Interface。
许多AWS SDK提供文档接口,允许您在表和索引上执行数据平面操作(创建、读取、更新、删除)。使用文档接口,您无需指定数据类型描述符。数据类型由数据本身的语义隐含。这些AWS SDK还提供了在JSON文档与原生Amazon DynamoDB数据类型之间轻松转换的方法。