假設我有這種情況,我在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你找出解決這個問題的辦法嗎? –