如何动态创建JSON字符串?

时间:2019-07-18 23:50:09

标签: python json

我正在尝试创建一个JSON字符串,该字符串可以在PUT请求中发送但可以动态构建。例如,完成后,我希望字符串看起来像这样:

{
    "request-id": 1045058,
    "db-connections":
        [
            {
                "db-name":"Sales",
                "table-name":"customer"
            }
        ]
}

我想对键使用常量,例如对于request-id,我想使用CONST_REQUEST_ID。因此,键将是

CONST_REQUEST_ID = "request-id"
CONST_DB_CONNECTIONS = "db_connections"
CONST_DB_NAME = "db-name"
CONST_TABLE_NAME = "table-name"

键的值将从各种变量中获取。例如,我们可以从名为dbname的变量中获取值为“ Sales”的值“ Sales”。

我尝试了json.load并获取异常。 请帮忙,因为我对Python有点陌生。

2 个答案:

答案 0 :(得分:1)

创建一个普通的python字典,然后将其转换为JSON。

raw_data = {
    CONST_DB_NAME: getDbNameValue()
}

# ...

json_data = json.dumps(raw_data)
# Use json_data in your PUT request.

答案 1 :(得分:0)

您可以使用带有变量的+来连接字符串。

CONST_REQUEST_ID = "request-id"
CONST_DB_CONNECTIONS = "db_connections"
CONST_DB_NAME = "db-name"
CONST_TABLE_NAME = "table-name"

request_id = "1045058"
db_name = "Sales"
table_name = 'customer'

json_string = '{' + \
    '"' + CONST_REQUEST_ID + '": ' + request_id \
    + ',' + \
    '"db-connections":' \
    +   '[' \
    +       '{' \
    +            '"' + CONST_DB_NAME +'":"' + db_name +  '",' \
    +           '"' + CONST_TABLE_NAME + '":"' + table_name + '"' \
    +        '}' \
    +    ']' \
    + '}'

print json_string

这就是结果

python st_ans.py 
{"request-id": 1045058,"db-connections":[{"db-name":"Sales","table-name":"customer"}]}