【问题标题】:Python pyodbc: parse JSON list is wrongPython pyodbc:解析 JSON 列表错误
【发布时间】:2017-05-28 09:28:15
【问题描述】:

我正在解析来自 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 只是通过了最后一个业务,而不是前两个:

为什么?

【问题讨论】:

  • 您的 response_data不是有效的 JSON。
  • 它也不是一个有效的 Python 字典。因此,我无法重现您的问题。

标签: python sql json pyodbc


【解决方案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()

【讨论】:

  • 正如其他人已经评论的那样,您的 json 无效。字典不是逗号分隔的。
【解决方案2】:

您的数据不是有效的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多