AWS DynamoDB QueryResult转换为Json

时间:2016-06-10 20:25:08

标签: json amazon-web-services jackson amazon-dynamodb

查询结果以列表形式出现 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获取。

1 个答案:

答案 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,