从打印和返回中获得不同的结果

时间:2017-01-14 16:15:07

标签: python json lambda

我目前正在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上打印,因此它正确显示值:

shell output

有什么想法吗?

提前干杯谢谢, 的Matthias

1 个答案:

答案 0 :(得分:3)

字符串不包含反斜杠。它的表示确实如此,因为它必须显示字符串(由""分隔)并不会在"出现时结束。如果你必须在由相同引号分隔的字符串文字中写一个引号,你也必须用反斜杠转义它。

也就是说,使用dumps模块中的json函数构建json更容易:

import json

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