2017-01-14 73 views
1

Ich entwickle gerade ein Lambda in Python und ich bin eigentlich ein bisschen mit dem Bau von Jsons in Python zu kämpfen.Verschiedene Ergebnisse von Druck und Rückgabe erhalten

Das Lambda liest aus einer dynamodb-Tabelle und fügt alle zurückgegebenen Werte zu einer JSON-Struktur hinzu.

Dies funktioniert wie ein Charme für das Drucken dieser JSON, aber nicht für die Rücksendung als Callback.

Samplecode:

import json 

def lambda_handler(event, context): 
    jsondata = '{' \ 
     '"cols": [' \ 
      '{"id":"","label":"Timestamp","pattern":"","type":"string"},' \ 
      '{"id":"","label":"Temperature","pattern":"","type":"number"},' \ 
      '{"id":"","label":"Humidity","pattern":"","type":"number"}' \ 
      '],' \ 
     '"rows": [' 
    jsondata += ']' \ 
     '}' 
    print jsondata 
    return jsondata 

if __name__ == "__main__": 
    lambda_handler(None, None) 

es mir scheint, dass dieser „string Zusatz“ nicht die glatte Art und Weise ist, aber es war der einzige, der für

gearbeitet, während der Druck wie erwartet aussieht:

log output

enthält der Rückgabewert Schrägstriche, die der Rückgabewert unbrauchbar für mich machen.

enter image description here

Da die Anwendung nur auf Shell Druck ist, wird er die Werte korrekt angezeigt:

shell output

Irgendwelche Ideen?

Beifall und Dank im Voraus, matthias

+1

Der Rückgabewert enthält keine Schrägstriche, zeigt er sie nur, weil alles, was Umgebung Sie es in verwenden, Displays String-Literale mit doppelten Anführungszeichen müssen also doppelte Anführungszeichen innerhalb der Zeichenfolge entfernen. Auf einem Diff. Beachten Sie, warum verwenden Sie nicht das 'json'-Paket, das Sie importieren? – schwobaseggl

Antwort

3

Die Zeichenfolge enthalten Schrägstriche nicht. Seine Darstellung tut, weil es zeigen muss, dass die Zeichenfolge (die durch "" begrenzt wird) nicht bei diesem Vorkommen von " endet. Wenn Sie ein Zitat innerhalb eines String-Literals schreiben müssten, das durch dasselbe Zitat abgegrenzt wird, müssten Sie es auch mit einem Backslash entziffern.

Das heißt, es ist einfacher, json mit der dumps Funktion aus dem json Modul zu bauen:

import json 

jsondata = json.dumps({ 
    "cols": [{"et": "cetera"}], 
}) 
+0

danke euch beiden - Es funktionierte wirklich für die Weiterleitung an Google-Diagramm. Aber eine Art merkwürdiges Verhalten .... @RemcoGerlich Ich habe diese Möglichkeit gesehen, aber ich habe den Bonus gegen den Aufbau als String nicht bekommen, da ich keine Lösung gefunden habe, um eine existierende jsondata zu erweitern. z.B. Anhängen eines weiteren Werts und Hinzufügen einer Unterebene, z. A und später B Zugabe mit Subniveaus '' '{ \t "A": 1, \t "B": [{ \t \t "a": 1 \t}, { \t \t "b" : } } '' ' –

+0

@ MatthisR.Wiora: Sie erstellen zuerst ein normales Python-Wörterbuch, das Sie ändern und erweitern können, bis es perfekt ist, und dann nur am Ende rufen Sie json.dumps auf, um es zu drehen in eine Zeichenfolge. – RemcoGerlich

+0

Ich werde das versuchen - DANKE! –

Verwandte Themen