2017-01-03 2 views
0

Ich bin neu zu AWS Lambda, ich habe genug zu kämpfen, um die Lösung zu finden, weiß nicht, was zu tun ist. Ich habe Lambda-Handler-Funktion. Mein Code ist so konzipiert, dass er nur mit dem letzten Wert arbeitet. wenn ich übergeben Sie die Daten in der Konsole wie:JSON Anfrage ändern Sie die JSON-Struktur in AWS Lambda

Data=[['1700','340','2040']] 

und es lambda Funktion übergeben. es funktioniert gut. Aber wenn ich API benutze, um die Daten als API-Anfrage im Konfigurationstest-Ereignis zu übergeben und die Daten zu drucken, ändere es die JSON-Struktur.

json Daten in Testereignis:

{ 
    "sum_net": 1700, 
    "sum_tax": 340, 
    "sum_gross": 2040 
} 

Handler-Funktion:

def handler(event,extract) 

data= event.values() 

return 

Ergebnis die Reihenfolge json Objekts ändern. Werte sind nicht identisch mit dem manuell definierten Wörterbuch. Gibt es eine Möglichkeit, die Struktur gleich zu halten. Problem tritt auf, wenn Json-Objekt zu Python-Dict ändert. es ändert die Reihenfolge der Schlüssel und Werte
Vielen Dank im Voraus.

Antwort

1

die Antwort von JSON order mixed up Extrahiert:

Sie nicht auf die Reihenfolge der Elemente innerhalb eines JSON-Objekt verlassen kann.

Vom JSON Spezifikation bei http://www.json.org/

Ein Objekt ist eine ungeordnete Menge von Name/Wert-Paare

Als Folge Lambda und andere JSON Bibliotheken sind frei, die Reihenfolge ändern der Elemente, wie sie es für richtig halten.

+0

Gibt es da irgendwie kann ich sie später in meiner Lambda-Funktion nicht um einen Wert sondern um 1000 Wert neu anordnen, welchen Ansatz kann ich verwenden. –

0

Die einzige Möglichkeit zu ändern, was Lambda zurückgibt, ist Lambda zu ändern. Wenn es sich nicht um eine Open-Source-AWS-Bibliothek und nicht um Open Source handelt, ist dies unter Umständen nicht einfach.

Wenn Sie wissen, was der Wert ist, den Sie von dem Handler wollen, "sum_gross" Ich gehe davon aus, können Sie direkt diesen Wert mit dem dictionary.get("key") Methode erhalten:

def handler(event,extract) 

    data = event.get("sum_gross"); 

return 

weitere Informationen über Python Wörterbücher: http://www.tutorialspoint.com/python/dictionary_get.htm