我正在解析来自Yelp的JSON响应:
{
"businesses": [
{
"id": "gaumont-wilson-toulouse-2",
"name": "Gaumont Wilson",
"city": "Toulouse"
}
{
"id": "la-cinémathèque-de-toulouse-toulouse",
"name": "La Cinémathèque de Toulouse",
"city": "Toulouse"
}
{
"id": "abc-toulouse",
"name": "ABC",
"city": "Toulouse"
}
]
}
我写了我的Python代码:
for element in response_data['businesses']:
SQL_ID = element['id']
SQL_Name = element['name']
SQL_City = element['city']
cursor.execute("INSERT INTO Yelp (ID, Name, City) values (?,?,?)", (SQL_ID,SQL_Name,SQL_City))
connection.commit()
但结果是Python只是通过了最后的业务,而不是前两个:
为什么?
答案 0 :(得分:1)
您是否使用json.loads()
加载了json?如果你没有,请尝试以下方法。
import json
reponse_data_json = json.loads(response_data)
for element in response_data_json['businesses']:
SQL_ID = element['id']
SQL_Name = element['name']
SQL_City = element['city']
cursor.execute("INSERT INTO Yelp (ID, Name, City) values (?,?,?)", (SQL_ID,SQL_Name,SQL_City))
connection.commit()
答案 1 :(得分:0)
您的数据不是有效的json格式,我做了一些改动以添加','在每个{}之后,然后您可以检索以下所有内容,在python 3.6下测试代码
data = {
"businesses": [
{
"id": "gaumont-wilson-toulouse-2",
"name": "Gaumont Wilson",
"city": "Toulouse"
},
{
"id": "la-cinémathèque-de-toulouse-toulouse",
"name": "La Cinémathèque de Toulouse",
"city": "Toulouse"
},
{
"id": "abc-toulouse",
"name": "ABC",
"city": "Toulouse"
},
]
}
jsonobject = json.dumps(data)
jsonobjectToString = json.loads(jsonobject)
for resp in jsonobjectToString['businesses']:
print(resp['id'])
print(resp['name'])
print(resp['city'])
=======
gaumont-wilson-toulouse-2
Gaumont Wilson
Toulouse
la-cinémathèque-de-toulouse-toulouse
La Cinémathèque de Toulouse
Toulouse
abc-toulouse
ABC
Toulouse