解组DynamoDB JSON
通过dynamodbnewimage流事件提供一些dynamodbjson,如何将其解组为常规JSON 通常我会使用,但是我似乎找不到通用的Marshall/Unmarshall函数解组DynamoDB JSON,json,amazon-web-services,aws-sdk-js,Json,Amazon Web Services,Aws Sdk Js,通过dynamodbnewimage流事件提供一些dynamodbjson,如何将其解组为常规JSON 通常我会使用,但是我似乎找不到通用的Marshall/Unmarshall函数 旁注:将DynamoDB JSON解组为JSON再解组为JSON时,我是否丢失了任何内容?您可以使用AWS.DynamoDB.Converter.unmarshall函数。调用以下命令将返回{updated_地址:146548182,uuid:'foo',status:'new'}: AWS.DynamoDB.Co
旁注:将DynamoDB JSON解组为JSON再解组为JSON时,我是否丢失了任何内容?您可以使用
AWS.DynamoDB.Converter.unmarshall
函数。调用以下命令将返回{updated_地址:146548182,uuid:'foo',status:'new'}
:
AWS.DynamoDB.Converter.unmarshall({
"updated_at":{"N":"146548182"},
"uuid":{"S":"foo"},
"status":{"S":"new"}
})
可以用DynamoDB的编组JSON格式建模的所有内容都可以安全地转换为JS对象和JS对象。另一种更容易实现的方法,让DynamoDB在幕后处理转换 将字段注释为@DynamoAttribute
...
@DynamoDBAttribute
private MyObjectClass myObject;
然后,您用@DynamoDBDocument注释“MyObjectClass”
@DynamoDBDocument
public class MyObjectClass {
....
}
DynamoDB将把“MyObjectClass myObject”转换和反转换为您发布的JSON形状。为和DynamoDB记录提供了很好的方法
const { marshall, unmarshall } = require("@aws-sdk/util-dynamodb");
const dynamo_json = { "updated_at": { "N": "146548182" }, "uuid": { "S": "foo" }, "status": { "S": "new" } };
const to_regular_json = unmarshall(dynamo_json);
const back_to_dynamo_json = marshall(to_regular_json);
输出:
// dynamo_json
{
updated_at: { N: '146548182' },
uuid: { S: 'foo' },
status: { S: 'new' }
}
// to_regular_json
{ updated_at: 146548182, uuid: 'foo', status: 'new' }
// back_to_dynamo_json
{
updated_at: { N: '146548182' },
uuid: { S: 'foo' },
status: { S: 'new' }
}
啊。。多么糟糕的API啊,它要求M thing
aws.DynamoDB.Converter.output({'M':record.DynamoDB.NewImage})
aws.DynamoDB.Converter.output
是DocumentClient将对象转换为JSON样式对象的一部分。我假设M
是您在stream事件中获得的数据的一部分。我打开了一个PR来改进API,添加了一个marshall
函数,该函数不需要M
键,它包含在SDK的2.71.0版中。从2020年4月开始使用AWS SDK Javascript API对我来说效果很好。谢谢!如果其他人来寻找这个问题的python/boto版本,那么这里有一个相关的问题:据我所知,这些注释是针对Java的。OP讨论的是JavaScript。
// dynamo_json
{
updated_at: { N: '146548182' },
uuid: { S: 'foo' },
status: { S: 'new' }
}
// to_regular_json
{ updated_at: 146548182, uuid: 'foo', status: 'new' }
// back_to_dynamo_json
{
updated_at: { N: '146548182' },
uuid: { S: 'foo' },
status: { S: 'new' }
}