2017-07-03 13 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: data.append(json.loads(line)) ' – Patthebug

+1

' dumps'メソッドの中で表示のオプションを指定することができます。あなたは 'json.dumps(行、インデント= 4、セパレータ=( '、'、 ':'))'を試してみることができますか?それがうまくいくなら私は適切な応答をします。 –

答えて

0

引数をindentにすると、余分な空白を含むjsonを出力できます。デフォルトでは改行や余分なスペースは出力されません。

with open('filename.json', 'w') as outfile1: 
    json.dump(data, outfile1, indent=4) 

https://docs.python.org/3/library/json.html#basic-usage

3

あなたが作成しようとしているファイルのフォーマットはJSON linesと呼ばれています。

なぜ、jsonsが改行で区切られていないのかと思われます。 writeメソッドは改行を追加しないためです。

あなたがより良いprint機能を使用する必要があり、暗黙的に改行したい場合:

with open("filename", 'w') as outfile1: 
    for row in data: 
     print(json.dumps(row), file=outfile1) 
関連する問題