Python请求响应Json不转换为字典

2024-03-28 10:57:25 发布

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

我得到一个嵌套的Json作为请求-响应,试图精确地表示name字段。然而,在将它转换为Json之后,原本应该是字典的东西变成了字符串。你能帮我指出我做错了什么以及如何处理吗?非常感谢

打印response.json()的示例结果:

{'subject': 'order', 'id':20, 'info':{"result":"record","name":"orderrecords", "items":[{"name":"apple","type":"food"},{"name":"orange","type":"food"}]}

我试过:

response= requests.get("url")
info= response.json()
print (type(info["items"]) #it is str here

我希望实现的是拥有一个值为“name”的字典,其中in项作为键,“type”作为值。比如{“苹果”:“食品”,“橘子”:“食品”}


Tags: 字符串nameinfojson食品示例字典food
2条回答

在控制台上打印json结果时,预期结果为“”。但是对象/变量(info)可能具有json格式

首先,得到的结果存在语法问题。请添加大括号:

信息={'subject':'order','id':20,'info':{“result”:“record”,“name”:“orderrecords”,“items”:[{“name”:“apple”,“type”:“food”},{“name”:“orange”,“type”:“food”}}

即使对象是字典:

打印(信息[“信息”][“项目”][0]) 打印(信息[“信息”][“项目”][1])

如果结果是json,请导入json&;按上述建议装载

返回的json对象无效,因为json应该有"而不是'

您可以使用replace()'替换为",然后转换为json对象:

import json
data = '''{'subject': 'order', 'id':20, 'info':{"result":"record","name":"orderrecords", "items":[{"name":"apple","type":"food"},{"name":"orange","type":"food"}]}}''' # there is also a missing } in the end
data = data.replace("'", '"')
data_json = json.loads(data)
res = {elt["name"] : elt["type"] for elt in data_json["info"]["items"]}
print(res)

输出:

{'apple': 'food', 'orange': 'food'}

注:这也将替换作为数据一部分的任何单引号(如有)

相关问题 更多 >