假设我有这种情况,我在AWS Lambda中获得了DynamodbStreamRecord
。 从此流记录(变量命名record
),我的Java方法链提取这样的地图:从DynamodbStreamRecord映射到JSON字符串
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
现在,我需要在一个JSON字符串变换这类w1Data
地图,我试图使用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指定的数据类型?
非常感谢您
谢谢@Samhash。是的,我已经知道DynamoDB的专用JSON表示,实际上,正如我写的,我正在寻找可能的解决方案,而不显示DynamoDB指定的数据类型。无论如何,我正在使用Java,而不是Javascript,所以Javascript AWS SDK中的DocumentClient没有用。一个可能的解决方案可能是实现一个自定义的方法来执行“翻译”,但也许有一个来自Java SDK的“魔术方法”,我可以使用,但我无法弄清楚哪一个。 – Marco
@Marco你找出解决这个问题的办法吗? –