2017-05-28 3 views
-1

ich eine JSON-Antwort von Yelp Parsen:Python Pyodbc: parsen JSON Liste ist falsch

{ 
    "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" 
     } 
    ] 
} 

und ich meine Python-Code schreiben:

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() 

Aber als Ergebnis Python passieren nur die letzte der Unternehmen und nicht die ersten beiden:

enter image description here

Warum?

+0

Ihre 'response_data' ist * nicht * gültig JSON. – timgeb

+0

Es ist auch kein gültiges Python-Wörterbuch. Daher kann ich Ihr Problem nicht erneut darstellen. – timgeb

Antwort

1

Haben Sie den JSON mit json.loads() geladen? Wenn Sie dies nicht getan haben, versuchen Sie Folgendes.

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() 
+0

wie die anderen bereits kommentiert, ist Ihr JSON nicht gültig. Die Wörterbücher sind nicht durch Kommata getrennt. – olisch

0

Ihre Daten kein gültiges JSON-Format, mache ich eine kleine Änderung hinzufügen ‚‘ nach der jeweils {} .then Sie alle wie unten abgerufen werden könnten, Code unter Python getestet 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