查询结果以列表形式出现
Map<String, AttributeValue>
,
将单个Map<String, AttributeValue>
转换为JSON
我发现的唯一方法是迭代地图中的每个键,
并构建JSON字符串。
final ObjectNode node = JsonNodeFactory.instance.objectNode();
for (final Entry<String, AttributeValue> entry : item.entrySet()) {
node.put(entry.getKey(), getJsonNode(entry.getValue(), depth + 1));
}
有没有更有效的方法来实现这一目标?有没有办法将dynamoDB的结果作为JSON获取。
答案 0 :(得分:0)
我弄清楚发生了什么事。需要更新AWS dynamoDB文档。 (例如) http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Query
AWS DynamoDB java api提供3个查询选项,
QueryResult,QuerySpec和Scan。
有文档没有明确区分QueryResult / QuerySpec。
它们返回不同的对象,内部表现非常不同。
QueryResult返回一个不可能的地图
有效地转换为json。
QuerySpec返回aws ITEMS,可以快速转换为json字符串
他们在文档中声明查询(通常)具有最大值
每个查询的数据返回大小为1MB,因此如果您需要获取更多内容,则必须进行后续调用。我发现这只适用于
QueryResult查询方法,它包含一个LastEvaluatedKey,它可以
用于找出下一个“页面”以获取更多数据是否可用。
但是,QuerySpec方法不包含LastEvaluatedKey,这使我感到困惑,然后我发现QuerySpec似乎在内部为您分配数据。我只用一个电话就可以返回4Mb,