1

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文字列を作成するための任意の提案を持っていますか?

ありがとうございました

答えて

0

DynamoDBのストリームは、ブール値の番号とBOOLのためにN、それは文字列のために、そのタイプのすなわちSを説明し、すべての値の余分なキーを持っている独自のJSNONフォーマットを有します。

あなたは、これはあなたに似ている別のSO problemを解決した。このリンクにhttp://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announcing-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript

になります。

+0

ありがとうございました@Samhash。はい、私は既にDynamoDBの専用JSON表現について知っていますが、私が書いたように、DynamoDBで指定されたデータ型を表示せずに解決策を探しています。とにかく、JavascriptではなくJavaを使用しているため、Javascript AWS SDKのDocumentClientは役に立ちません。可能な解決策は、 "変換"を実行するためのカスタムメソッドを実装することですが、おそらくJava SDKの「マジックメソッド」がありますが、どちらを使用するかはわかりません。 – Marco

+0

@Marcoこの問題の解決策を見つけましたか? –

関連する問題