gpt4 book ai didi

python - Python 的 JSON 响应格式

转载 作者:行者123 更新时间:2023-12-01 02:20:01 27 4
gpt4 key购买 nike

我一直在从事一个副项目,并且一直在努力使用 Python 从 JSON 响应中提取数据。无论我想出什么,我似乎都无法获得正确格式化的 JSON 结果(可能是因为我是 Python 新手,所以我可以使用一些指导)

通过这几行,我查询 API 并将响应写入文件:

response = client.get_products()
with open('file.json', 'w') as f:
f.write(str(response))

生成的json文件内容如下:

输出

{
'version': 'value',
'list': [
'{
"product":
{
"attributes":
{
"name":"value",
"location":"value"
},
"description":"text productA"
},
"version":"value"
}',
'{
"product":
{
"attributes":
{
"name":"value",
"location":"value"
},
"description":"text productB"
},
"version":"value"
}'
],
'date':'value'
}

这看起来不像有效的 JSON,请注意单引号...但是,{"product":...} 中的所有内容看起来都很好。所以我尝试了另一种方法:

response = client.get_products()
with open('file.json', 'w') as output:
json.dump(response, output)

这次 json 文件包含以下内容:

输出

{
"version": "value",
"list": [
"{
\"product\":
{
\"attributes\":
{
\"name\":\"value\",
\"location\":\"value\"
},
\"description\":\"text productA\"
},
\"version\":\"value\"
}",
"{
\"product\":
{
\"attributes\":
{
\"instanceType\":\"value\",
\"location\":\"value\"
},
\"description\":\"text productB\"
},
\"version\":\"value\"
}"
],
"date": "value"
}

嗯,这也不是我想要的......

问题:我做错了什么?更重要的是,如何将响应写入有效的格式化 JSON 文件?所以预期的结果应该是:

预期输出

{
"version": "value",
"list": [
{
"product":
{
"attributes":
{
"name":"value",
"location":"value"
},
"description":"text productA"
},
"version":"value"
},
{
"product":
{
"attributes":
{
"name":"value",
"location":"value"
},
"description":"text productB"
},
"version":"value"
}
],
"date": "value"
}

最后,我要隔离响应中的所有“产品”条目,有关如何实现此目的的其他提示的奖励积分:)

最佳答案

该对象包含采用 JSON 编码的字符串list 键引用的列表中的每个元素都是一个字符串对象,恰好包含有效的 JSON 数据。通过使用 json.dumps(),您将这些字符串编码为 JSON 值,因此反斜杠的使用是完全正确的;否则,它是不透明的数据,对于 JSON 编码器来说,数据本身也是有效的 JSON 并不重要。

这些元素是 JSON 字符串可能是您调用的服务端的一个错误。现在,您需要首先解码这些 JSON 字符串来消除该错误:

response = client.get_products()
response['list'] = [json.loads(s) for s in response['list']]
with open('file.json', 'w') as output:
json.dump(response, output)

如果您还负责 API 输出,请修复该输出。不要对您的数据进行双重编码。

正如您所发现的,使用 str() 不会产生 JSON 输出。这会使用有效的 Python 语法生成 Python 表示

关于python - Python 的 JSON 响应格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48051149/

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