我的代码正从api这样提取JSON数据,但是我无法从JSON对象读取代码。
url = 'https://api.test.net/Vacancy'
payload = {
"APIKey": "0000",
"Action": "GetAllVacancies",
"Content-Type" : "json",
}
headers = {}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r.content)
cursor = mydb.cursor()
json_obj = r.json()
for index in json_obj:
cursor.execute("INSERT INTO apidata (VacancyName, Department, Location) VALUES (%s, %s, %s)", (json_obj[index]["VacancyName"], (json_obj[index]["Department"], (json_obj[index]["Location"]))
cursor.close()
我的JSON响应如下
{
"isError":false,
"Status":0,
"Message":"",
"Result":[
{
"VacancyName":"Test Vacancy",
"VacancyDescription":"test data 123",
"Location":"location 1",
"Department":"Finance",
但是我仍然遇到错误
TypeError'bool'对象不可下标
我正在尝试提取此JSON数据并将其发送到数据库,谢谢!
答案 0 :(得分:1)
您的JSON对象是dict
。遍历字典将遍历键。
对象中的第一个键是"isError"
,因此当您尝试访问与json_obj[index]["Department"]
等效的(json_obj["isError"]["Department"]
时,False["Department"]
给出了您所看到的错误。
以后请提供完整的错误消息,包括回溯。如果这样做的话,回答这些问题会容易得多。
答案 1 :(得分:1)
看看
for index in json_obj:
cursor.execute("INSERT INTO apidata (VacancyName, Department, Location) VALUES (%s, %s, %s)", (json_obj[index]["VacancyName"], (json_obj[index]["Department"], (json_obj[index]["Location"]))
您在json_obj
中的键上循环,第一个键为isError
。因此json_obj[index]
是False
,因此不是下标,尝试访问键[“ VacancyName”]时会出错。
您需要遍历json_obj["Result"]
中的元素
for result in json_obj["Result"]:
cursor.execute("INSERT INTO apidata (VacancyName, Department, Location) VALUES (%s, %s, %s)", (result["VacancyName"], result["Department"], result["Location"]))