1

Sagen wir, ich habe diese Situation, in der ich ein DynamodbStreamRecord in einem AWS Lambda bekam. Von diesem Strom Datensatz (variable record genannt), ich habe eine Kette von Java-Methoden, die eine Karte auf diese Weise extrahiert:Von DynamodbStreamRecord Karte zu JSON Zeichenfolge

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 

Nun, ich brauche solche w1Data Karte in einem JSON-String zu verwandeln, und ich versuchte, verwenden Sie den org.json.JSONObject Konstruktor, der eine Karte als Eingabeparameter, gefolgt von einem toString():

String jsonRepr = new JSONObject(w1Data).toString(); 

Aber ich erhielt diesen seltsamen string:

'{"SessionExtraInfo":"{M: {Info={M: {CampaignID={N: 3,}, OriginID={N: 1,}, EntitySourceClassID={N: 8,}},}},}"}' 

die stattdessen so etwas wie dies sein sollte:

'{"SessionExtraInfo": {"Info": {"OriginID": "1", "CampaignID": "3", "EntitySourceClassID": "8"}}}' 

Haben Sie Vorschläge haben ein gültiges JSON-String aus dieser Karte zu erstellen, ohne die Datentypen von DynamoDB angegeben zeigt?

Vielen Dank

Antwort

0

DynamoDB-Stream hat sein eigenes JSNON Format, in dem es einen zusätzlichen Schlüssel mit jedem Wert hat, der für String, N für Anzahl und BOOL für Boolesche Wert seines TYPE d.h S beschreibt.

Sie sollen diesen Link sehen in http://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announcing-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript

Die anderen SO problem gelöst hat, das Sie ähnelt.

+0

Danke @Samhash. Ja, ich kenne bereits die dedizierte JSON-Repräsentation für DynamoDB und tatsächlich suche ich, wie ich geschrieben habe, nach einer möglichen Lösung, ohne die von DynamoDB angegebenen Datentypen anzuzeigen. Wie auch immer, ich benutze Java, nicht Javascript, also ist der DocumentClient von Javascript AWS SDK nicht nützlich. Eine mögliche Lösung könnte darin bestehen, eine benutzerdefinierte Methode zur Durchführung der "Übersetzung" zu implementieren, aber vielleicht gibt es eine "magische Methode" von Java SDK, die ich verwenden kann, aber ich kann nicht herausfinden, welche. – Marco

+0

@Marco Haben Sie eine Lösung für dieses Problem gefunden? –

Verwandte Themen