Python多行JSON和变量

时间:2017-02-24 16:52:50

标签: python json

我正在尝试在Python(v2.7)中编码一个稍大的JSON,而我在输入变量时遇到了麻烦!

由于JSON是多行的并且为了保持我的代码整洁,我决定使用三重双引号使其看起来如下:

my_json = """{
        "settings": {
                "serial": "1",
                "status": "2",
                "ersion": "3"
        },
        "config": {
                "active": "4",
                "version": "5"
        }
}"""

要对此进行编码,输出对我来说效果很好,但我不知道如何更改我在那里的数字并用变量字符串替换它们。我试过了:

    "settings": {
            "serial": 'json_serial',

但无济于事。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:11)

为什么不把它变成字典并设置变量然后使用json库将它变成json

import json
json_serial = "123"
my_json = {
    'settings': {
        "serial": json_serial,
        "status": '2',
        "ersion": '3',
    },
    'config': {
        'active': '4',
        'version': '5'
    }
}
print(json.dumps(my_json))

答案 1 :(得分:0)

如果你绝对坚持生成带字符串连接的JSON - 而且,要清楚,你绝对不应该 - 完全确定你的输出是有效的JSON的唯一方法是生成用JSON生成器替换的子串。那就是:

'''"settings" : {
  "serial"   : {serial},
  "version"  : {version}
}'''.format(serial=json.dumps("5"), version=json.dumps(1))

但不要。真的,真的没有。对于这种情况,The answer by @davidejones是正确的事情。