2017-07-03 210 views
0

我有一個json對象列表,我想寫入一個json文件。我的數據示例如下:將多個json對象寫入json文件

{ 
    "_id": "abc", 
    "resolved": false, 
    "timestamp": "2017-04-18T04:57:41 366000", 
    "timestamp_utc": { 
     "$date": 1492509461366 
    }, 
    "sessionID": "abc", 
    "resHeight": 768, 

    "time_bucket": ["2017-year", "2017-04-month", "2017-16-week", "2017-04-18-day", "2017-04-18 16-hour"], 
    "referrer": "Standalone", 
    "g_event_id": "abc", 

    "user_agent": "abc" 
    "_id": "abc", 
} { 
    "_id": "abc", 
    "resolved": false, 
    "timestamp": "2017-04-18T04:57:41 366000", 
    "timestamp_utc": { 
     "$date": 1492509461366 
    }, 
    "sessionID": "abc", 
    "resHeight": 768, 

    "time_bucket": ["2017-year", "2017-04-month", "2017-16-week", "2017-04-18-day", "2017-04-18 16-hour"], 
    "referrer": "Standalone", 
    "g_event_id": "abc", 

    "user_agent": "abc" 
} 

我想將此發送給json文件。下面是我用於此目的的代碼:

with open("filename", 'w') as outfile1: 
    for row in data: 
     outfile1.write(json.dumps(row)) 

但是,這給了我一個只有1長行數據的文件。我想爲我的原始數據中的每個json對象設置一行。我知道還有一些其他的StackOverflow問題試圖解決一些類似的情況(通過外部插入'\ n'等),但由於某種原因,它在我的情況下並不奏效。我相信必須有一種pythonic的方式來做到這一點。

我該如何做到這一點?

+0

你試過https://stackoverflow.com/questions/252703/append-vs-extend?answertab=votes#tab-top ? – EnriqueDev

+0

我正在嘗試將這些數據寫入文件中,而不是讀入文件中。讀入完全正常,我可以使用以下代碼讀取多個'json'對象: 'data = [] with打開('文件名')爲f: 對於f中的行: data.append(json.loads(line))' – Patthebug

+1

您可以在'dumps'方法中指定顯示選項,例如。你可以試試'json.dumps(row,indent = 4,separators =(',',':'))'看看它是怎麼回事?如果它有效,我會做出適當的迴應。 –

回答

3

你要創建的文件的格式被稱爲JSON lines

看來,你在問爲什麼jsons沒有用換行符分開。因爲write方法不會追加換行符。

如果你想換行隱,你應該更好地利用print功能:

with open("filename", 'w') as outfile1: 
    for row in data: 
     print(json.dumps(row), file=outfile1)