2017-06-14 88 views
3

鑑於一些DynamoDB JSON通過DynamoDB NewImage流事件,我該如何將它解組到常規JSONUnmarshall DynamoDB JSON

{"updated_at":{"N":"146548182"},"uuid":{"S":"foo"},"status":{"S":"new"}} 

通常我會用AWS.DynamoDB.DocumentClient,但我似乎無法找到一個通用的馬歇爾/和解組功能。

旁註:我是否會丟失任何反編組DynamoDB JSON到JSON並返回?

+0

如果其他人來尋找這個問題的蟒蛇/博託版本,這裏是相關的問題:https://stackoverflow.com/questions/36558646/how-to-convert-from-dynamodb-wire-protocol-to- native-python-object-manually- – VillasV

回答

4

您可以使用AWS.DynamoDB.Converter.unmarshall函數。調用下面將返回{ updated_at: 146548182, uuid: 'foo', status: 'new' }:可在DynamoDB的編組JSON格式進行建模

AWS.DynamoDB.Converter.unmarshall({ 
    "updated_at":{"N":"146548182"}, 
    "uuid":{"S":"foo"}, 
    "status":{"S":"new"} 
}) 

一切都可以安全地轉換爲從JS對象。

+0

ARGH ..多麼糟糕的API,它需要的東西'aws.DynamoDB.Converter.output({'M':record.dynamodb.NewImage})' – hendry

+0

'AWS.DynamoDB .Converter.output'是將[DynamoDB AttributeValue](http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html)對象轉換爲JSON樣式對象的DocumentClient的一部分。我認爲'M'是你在流事件中獲得的數據的一部分。 – giaour

+1

我打開了一個PR,通過添加不需要'M'鍵的'marshall'函數來改進API,並且它包含在SDK的2.71.0版本中。 – giaour