2

假设我有这种情况,其中我有DynamodbStreamRecord一个 AWS Lambda 内部。从这个流记录(名为 的变量record)中,我有一个以这种方式提取地图的 Java 方法链:

Map<String, AttributeValue> w1Data = record.getDynamodb().
    getNewImage().  // obtain the image
    get("DT").      // get from key "DT"
    getM().         // obtain the related map
    get("w1_data"). // get from key "w1_data"
    getM();         // obtain the related map

现在,我需要将此类w1Data映射转换为 JSON 字符串,并尝试使用将org.json.JSONObject映射作为输入参数的构造函数,后跟一个toString()

String jsonRepr = new JSONObject(w1Data).toString();

但我得到了这个奇怪的字符串:

'{"SessionExtraInfo":"{M: {Info={M: {CampaignID={N: 3,}, OriginID={N: 1,}, EntitySourceClassID={N: 8,}},}},}"}'

而应该是这样的:

'{"SessionExtraInfo": {"Info": {"OriginID": "1", "CampaignID": "3", "EntitySourceClassID": "8"}}}'

您是否有任何建议从该地图创建有效的 JSON 字符串而不显示 DynamoDB 指定的数据类型?

非常感谢

4

1 回答 1

1

DynamoDB Stream 有自己的 JSNON 格式,其中每个值都有一个额外的键来描述其类型,即 S 表示字符串,N 表示数字,BOOL 表示布尔值。

您应该查看此链接http://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announcing-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript

这解决了另一个类似于您的SO 问题。

于 2016-08-05T06:17:41.370 回答