2016-06-10 58 views
1

查詢結果進來的 Map<String, AttributeValue>列表的形式,AWS DynamoDB QueryResult中轉換成JSON

要一個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

我想清楚發生了什麼事情。 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,