2

DynamodbStreamRecordAWS 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

ここで、そのようなマップを JSON 文字列に変換する必要があり、入力パラメーターとしてマップを受け取り、その後に:が続くコンストラクターw1Dataを使用しようとしました。org.json.JSONObjecttoString()

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 文字列を作成するための提案はありますか?

どうもありがとうございました

4

1 に答える 1

1

DynamoDB ストリームには独自の JSNON 形式があり、TYPE を表すすべての値を持つ追加のキーがあります。つまり、文字列の場合は S、数値の場合は N、ブール値の場合は BOOL です。

このリンクを調べる必要がありますhttp://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announce-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript

これにより、あなたに似た別のSO 問題が解決されました。

于 2016-08-05T06:17:41.370 に答える