查询结果以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获取。
我弄清楚发生了什么。需要更新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,