Python/Json:如何使用**dict格式化嵌套的Json字符串?

2024-05-14 06:04:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我从excel中读取了testdata,并希望将其用于格式化所用请求帖子正文的嵌套json字符串,详细信息如下:

import json


kwargs = {"name": "testname", "device": {"plt": "dsk"}}

payload = """
{{
    "name": "{name}",
    "device": "{device}",
}}
"""

payload = json.loads(payload.format(**kwargs))

预期有效载荷应为:

{
    "name": "testname",
    "device": {"plt": "dsk"}
}

但是json.loads(payload.format(**kwargs))有一个错误,那么如何用**dict格式化嵌套的json字符串呢

error message


Tags: 字符串namejsonformatdevice详细信息pltexcel
1条回答
网友
1楼 · 发布于 2024-05-14 06:04:21

你应该分步进行操作,找出哪里出了问题

kwargs = {"name": "testname", "device": {"plt": "dsk"}}

payload = """
{{
    "name": "{name}",
    "device": "{device}",
}}
"""

json_string = payload.format(**kwargs)

print(json_string)

给予

{
    "name": "testname",
    "device": "{'plt': 'dsk'}",
}

请注意,字典{'plt': 'dsk'}在插入到有效负载字符串之前是以python样式字符串化的。这是无效的,需要用引号替换撇号

为了解决这个问题,我建议您创建一个类似于payload的python dict,然后将的转换为json字符串

# Some preexisting dictionary
payload_dict = {"oldvalue": 0}

# Add values from kwargs
for key, value in kwargs.items():
    payload_dict[key] = value

# Dump it to json
payload = json.dumps(payload_dict, indent=4) # indent=4 is only for pretty-print
print(payload)

它给出了输出:

{
    "oldvalue": 0,
    "name": "testname",
    "device": {
        "plt": "dsk"
    }
}

如果payload_dictkwargs相同,那么您需要做的就是

payload = json.dumps(kwargs)
print(payload)
{
    "name": "testname",
    "device": {
        "plt": "dsk"
    }
}

相关问题 更多 >