JSONデータをファイルに書き込むにはどうすればいいですか?
変数data
にJSONデータを格納しています。
これをテスト用のテキストファイルに書き込んで、毎回サーバーからデータを取得する必要がないようにしたいと思います。
現在、次のようにしています。
obj = open('data.txt', 'wb')
obj.write(data)
obj.close
というエラーが出ています。
TypeError: must be string or buffer, not dict`.
これを修正するには?
982
3
実際のJSONの部分を忘れています。
data
は辞書で、まだJSONにエンコードされていません。最大限の互換性を得るために、このように書いてください(Python 2と3)。最新のシステム(Python 3とUTF-8のサポートなど)では、次のようにして、より美しいファイルを書くことができます。
Python 2では、ascii-encodedではなく、utf8-encodedのファイルを取得することができます。
このコードはPython 3ではよりシンプルになります。
Windowsでは、
open
にencoding='utf-8'
という引数がまだ必要です。データのエンコードされたコピーをメモリに保存することを避け(
dumps
の結果)、Python 2と3の両方で utf8-encoded バイト文字を出力するには、次のように使用します。codecs.getwriter
コールは Python 3 では冗長ですが、Python 2 では必要です。読みやすさとサイズ:。
ensure_ascii=False`を使用することで、可読性が向上し、サイズも小さくなります。
さらに、
dump
やdumps
の引数にフラグindent=4, sort_keys=True
(by dinos66) を追加することで、可読性を向上させることができます。この方法では、ファイルサイズが若干大きくなりますが、jsonファイルできれいにインデントされたソート構造が得られます。それは、人間の目で見たときに読みやすいように整形したJSONファイルを書くことです。そのためには、
sort_keys
をTrue
とし、indent
に4つのスペースを指定すればOKです。また、JSONファイルにアスキーコードが書き込まれないように注意してください。