2015-11-20 673 views
0

我怎樣才能以下json格式的日誌轉換爲csv文件中python轉換JSON到CSV:
Json的輸入(log.json):我怎樣才能在Python

{"time":"14472","abc":"0","Def":[{"name":"C","value":77},{"name":"N","value":88}]} 
{"time":"1447","abc":"1","Def":[{"name":"C","value":99,{"name":"N","value":0.12}]} 

CSV輸出:

time abc name value 
14472 0  C  77 
14472 0  N  88 
1447 1  C  99  
1447 1  N  0.12 
+0

你確定你有輸出嗎?你不是說第二行是'N 88'嗎?第三行是'C 99'? –

+0

您將必須首先擁有有效的json。我建議[jsonlint](http://jsonlint.com/)檢查。 – gla3dr

+2

您是否自己嘗試過某些東西,如果有,請告訴我們您卡在哪裏,或者您是否只是在等待某人發佈答案? –

回答

0

看看https://docs.python.org/2/library/json.html

我還沒有用過它個人,但我撇過一次的文檔,它似乎爲每個json對象和每個數組的列表創建一個字典。

一旦你有了,那麼你可以得到列標籤的鍵,然後你可以它實際上寫入文件應該不是一個大問題。

0

這應該假定「log.json」輸入文件包含有效的JSON對象:

import csv 
import json 

with open('log.json', 'rb') as infile, open('output.csv', 'wb') as outfile: 
    fieldnames = ['time', 'abc', 'name', 'value'] 
    writer = csv.DictWriter(outfile, fieldnames, delimiter='\t') 
    writer.writeheader() 
    for line in infile: 
     row = json.loads(line) 
     for a_def in row['Def']: 
      writer.writerow({'time': row['time'], 
          'abc': row['abc'], 
          'name': a_def['name'], 
          'value': a_def['value']})