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
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
@Marco Haben Sie eine Lösung für dieses Problem gefunden? –