gpt4 book ai didi

python - 为什么我的 json 结果包含两个同名的部分?

转载 作者:行者123 更新时间:2023-11-30 23:06:25 24 4
gpt4 key购买 nike

我使用以下代码从字符串值中获取 json,更新它并以字符串形式返回(使用 simplejson):

if text:
qj = json.loads(text)
else:
qj = json.loads('{}')
if not qj.get(counter):
qj[counter] = {}
if not qj.get(counter).get('values'):
qj[counter]['values'] = []
if not value in qj[counter]['values']: # avoid duplicates
qj[counter]['values'].append(value)
text = json.dumps(qj)

如果多次使用相同的 counter 值运行该函数(下例中为 4),为什么会得到以下结果:

{"4": {"values": ["test1"]}, "4": {"values": ["test2"]}}

创建的 4 部分的数量始终为 2。如果我第三次运行该函数,则第一个值将被更新(未按我的预期添加)。

预期输出应该是:

{"4": {"values": ["test1", "test2", "test3"]}}

我的代码有什么问题?

最佳答案

如果在第一遍中您有以下 json:

{4: {"values": ["test1"]}}

text = json.dumps(qj) 之后您将看到此字符串:

'{"4": {"values": ["test1"]}}'

现在,当使用 qj = json.loads(text) 加载 json 时,您会收到:

{'4': {'values': ['test1']}} # 4 has turned to '4'!

您检查 4 是否已存在,失败,因为它是一个数字。

因此,要解决您的问题,您只需在测试期间将计数器转换为字符串即可:

if not qj.get(str(counter)):
...

出现此行为的原因是 json 不允许整数作为键,请参阅 JSON documentation的定义:

pair

string : value

关于python - 为什么我的 json 结果包含两个同名的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com