2016-04-26 10 views
-1

Ich brauche die folgende verschachtelte Wörterbuch in json von einer api in eine CSV-DateiKopieren eines json verschachtelt Wörterbuch CSV-Datei

{ 
"result": [{ 
       "short_description": "I am getting bluescreen error", 
       "sys_id": "39b5f8c2376ede007520021a54990e5c", 
       "opened_at": "2016-04-04 05:19:53", 
       "number":"INC0258523" 
      }, 
      { 
       "short_description": "laptop crashed with a blue screen", 
       "sys_id": "da0095380f43d200a4f941fce1050eeb", 
       "opened_at":"2016-04-25 06:33:52", 
       "number":"INC0259067" 
      }, 
      { 
       "short_description": "Laptop not booting", 
       "sys_id": "ecf9c9b00f43d200a4f941fce1050e17", 
       "opened_at": "2016-04-25 06:07:16", 
       "number": "INC0259061" 
      }] 
} 

Das kopieren ist, was ich versucht habe bisher

with open('D:/file.csv', 'wb') as f: 
     w = csv.DictWriter(f, data.keys()) 
     w.writerow(data) 

ich erhalte das folgende Ergebnis in einzelner Zelle der cSV-Datei

[{"short_description":"I am getting bluescreen error","sys_id":"39b5f8c2376ede007520021a54990e5c","opened_at":"2016-04-04 05:19:53","number":"INC0258523"},{"short_description":"laptop crashed with a blue screen","sys_id":"da0095380f43d200a4f941fce1050eeb","opened_at":"2016-04-25 06:33:52","number":"INC0259067"},{"short_description":"Laptop not booting","sys_id":"ecf9c9b00f43d200a4f941fce1050e17","opened_at":"2016-04-25 06:07:16","number":"INC0259061"}]} 

Während ich es brauche in dem Format zu sein, wo Tasten short_description, sys_id, opened_at, number sind Spaltennamen und deren Werte als entsprechende Spaltendaten.

+1

Was ist 'Daten'? Wenn es die JSON-Zeichenkette ist, müssen Sie sie zuerst mit 'json.loads (data)' dekodieren. – Selcuk

+0

Bevor Sie schreiben, müssen Sie Ihre Daten in eine Liste serialisieren, in der jedes Element eine Zelle darstellt. –

+0

Daten sind eine JSON-Zeichenfolge und ich habe json.loads (Daten) verwendet. –

Antwort

1

Sie müssen die Zeilenwörterbücher extrahieren. Im Moment verwenden Sie die oberste Ebene 'result' dict, um den CSV-Writer zu füttern.

with open('D:/file.csv', 'wb') as f: 
     w = csv.DictWriter(f, data['result'][0].keys()) 
     for row in data['result']: 
      w.writerow(row) 
+0

Vielen Dank! Es funktioniert perfekt :) –

+0

Jetzt brauche ich nur die Spaltennamen –

+0

'' data ['result'] [0] .keys() '' sind die Spaltennamen. – nephlm

Verwandte Themen