AWSラムダ内に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
マップを変換する必要があると私がしようとしましたtoString()
続い入力パラメータとしてマップを、取るorg.json.JSONObject
コンストラクタを使用します。
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"}}}'
あなたはDynamoDBので指定されたデータの種類を示すことなく、このマップから有効なJSON文字列を作成するための任意の提案を持っていますか?
ありがとうございました
ありがとうございました@Samhash。はい、私は既にDynamoDBの専用JSON表現について知っていますが、私が書いたように、DynamoDBで指定されたデータ型を表示せずに解決策を探しています。とにかく、JavascriptではなくJavaを使用しているため、Javascript AWS SDKのDocumentClientは役に立ちません。可能な解決策は、 "変換"を実行するためのカスタムメソッドを実装することですが、おそらくJava SDKの「マジックメソッド」がありますが、どちらを使用するかはわかりません。 – Marco
@Marcoこの問題の解決策を見つけましたか? –