2017-01-14 157 views
1

我目前正在開發一個Python中的lambda,我實際上有點在python中構建jsons。從打印和返回獲取不同的結果

lambda從dynamodb表中讀取並將所有返回的值添加到json結構中。

這工作就像打印該json的魅力,但不是作爲回調返回它。

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) 

在我看來,這個「字符串另外」不是最流暢的方式,但它只是工作了

而打印看起來如預期之一:

log output

返回值包含反斜槓,這些都使得返回值不可用我。

enter image description here

由於應用程序僅在外殼印花,這是正確顯示的值:

shell output

任何想法?

歡呼和預先感謝, 馬蒂亞斯

+1

返回值不包含反斜槓,它只是顯示,顯示器帶雙引號的字符串文字,因此必須在字符串內部轉義雙引號。在差異。注意,你爲什麼不使用你正在導入的'json'包? – schwobaseggl

回答

3

的字符串不包含反斜槓。它的表示會這樣做,因爲它必須表明該字符串(由""定界)不會在發生的"處發生。如果你必須在由相同引號分隔的字符串文字中寫一個引號,你必須用反斜槓來轉義它。

這就是說,它更容易從json模塊dumps功能構建JSON:他們是因爲什麼環境中,你在使用它

import json 

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

感謝你們兩人 - 它真的很適合轉發到谷歌圖表。但有一種奇怪的行爲...... @RemcoGerlich我已經看到了這種可能性,但是我沒有把它作爲一個字符串來獲得獎勵,因爲我沒有找到任何解決方案來擴展現有的jsondata。例如附加一個更多的值並添加一個子級例如具有A和與它的子級別 '''{ \t 「A」 增加之後B:1, \t 「B」:[{ \t \t 「一」:1 \t},{ \t \t 「b」 的:2 \t}] }''' –

+0

@ MatthisR.Wiora:您首先創建一個正常的Python字典,您可以更改和擴展它,直到它完美爲止,然後只在最後調用json.dumps來將它變成成一個字符串。 – RemcoGerlich

+0

我會試試 - 謝謝! –