我99%肯定这已经得到了解答,但我是一个认真的新手,需要你的天使。
以下是JSON我通过API调用
{
name: "dt_listings",
count: 10,
results: {
collection1: [
{
title: {
text: "Human Anatomy and Physiology 10th",
href: "http://www.directtextbook.com/isbn/9780321927040"
},
isbn: {
text: "9780321927040",
href: "http://www.directtextbook.com/isbn/9780321927040"
}
} ]
import requests
import json
dt_raw = requests.get(dt_listings_url)
dt_json = dt_raw.json()
在此之后,我的问题就开始了。我似乎无法转到['结果']然后转到['collection1']然后['title']来获取['title'] ['text']和['isbn'] ['的值文本']
大请求,如果您使用代码示例来提供帮助,请使用上面对象的名称,以便我可以关注(我在这里有一个严重的大脑冻结!)。是的,我已经阅读了许多相关的stackoverflow帖子,我仍然很难用这个。
答案 0 :(得分:3)
检查你的json,它有三个错误
这是你适当的json
{
"name": "dt_listings",
"count": 10,
"results": {
"collection1": [
{
"title": {
"text": "Human Anatomy and Physiology 10th",
"href": "http://www.directtextbook.com/isbn/9780321927040"
},
"isbn": {
"text": "9780321927040",
"href": "http://www.directtextbook.com/isbn/9780321927040"
}
}
]
}
}
如果您的json格式正确,请检查您的json类型 的类型(dt_json)强>
如果type为 str ,请执行 json.loads(dt_json),然后尝试 dt_json ["结果"] [&#34 ; collection1"] [0] ["标题"] ["文本"] 强>
如果type是dict,那么直接尝试 dt_json ["结果"] [" collection1"] [0] [" title"] [ "文本"] 强>
答案 1 :(得分:0)
您可以使用:
dt_json [ “结果”] [ “collection1”] [0] [ “标题”] [ “文本”]
有一个关闭方括号(“]”),可能在最后一个结束花括号之前。这使得dt_json [“results”] [“collection1”]的值成为一个应该由整数索引的列表。
答案 2 :(得分:0)
首先,字典无效。 键应为双引号。
<强>第二下, 您必须通过 API 检查响应的类型。
假设您得到 dt_json 的答案。使用type(dt_json)
检查它的类型。
如果类型为“ str ”,那么您必须使用json.loads 加载 dt_json (dt_json) )然后你可以轻松地 prase ..
答案 3 :(得分:0)
{
"name": "dt_listings",
"count": 10,
"results": {
"collection1": [
{
"title": {
"text": "Human Anatomy and Physiology 10th",
"href": "http://www.directtextbook.com/isbn/9780321927040"
},
"isbn": {
"text": "9780321927040",
"href": "http://www.directtextbook.com/isbn/9780321927040"
}
}
]
}
}
我猜你的数据应该如上所述。您的json数据中存在一些语法错误。
如果那是真的:
import json
your_data = "{\n\"name\": \"dt_listings\",\n\"count\": 10,\n\"results\": {\n\"collection1\": [\n{\n \"title\": {\n \"text\": \"Human Anatomy and Physiology 10th\",\n \"href\": \"http://www.directtextbook.com/isbn/9780321927040\"\n },\n \"isbn\": {\n \"text\": \"9780321927040\",\n \"href\": \"http://www.directtextbook.com/isbn/9780321927040\"\n }\n }\n ]\n} \n}\n"
structured_data = json.loads(your_data)
# then get the result:
print structured_data['results']['collection1'][0]['isbn']
答案 4 :(得分:0)
每个人都非常乐于助人。关键问题是dt_json是类型dict。所以下面的代码完美无缺。
dt_raw = requests.get(dt_listings_url)
dt_json = dt_raw.json()
print dt_json["results"]["collection1"][0]["isbn"]["text"]