4

次の関数を使用して、json と jsonpickle を使用してオブジェクトをファイルにシリアル化することがあります。

def json_serialize(obj, filename, use_jsonpickle=True):
    f = open(filename, 'w')
    if use_jsonpickle:
    import jsonpickle
    json_obj = jsonpickle.encode(obj)
    f.write(json_obj)
    else:
    simplejson.dump(obj, f) 
    f.close()

問題は、たとえば "json_serialize(mydict, myfilename)" を使用して辞書をシリアル化すると、シリアル化全体が 1 行に表示されることです。これは、CSV ファイルの場合のように、エントリを手動で検査するためにファイルを grep できないことを意味します。オブジェクトの各要素 (dict の各エントリやリストの各要素など) が JSON 出力ファイルの個別の行に配置されるようにする方法はありますか?

ありがとう。

4

2 に答える 2

4

(simple)json.dump()indent引数を持っています。jsonpickleおそらく似たようなものがあるか、最悪の場合、それをデコードして再度エンコードすることができます。

于 2010-04-19T01:51:14.567 に答える
3

Jsonpickleはjsonバックエンドの1つを使用するため、コードでこれを試すことができます。

jsonpickle.set_encoder_options('simplejson', sort_keys=True, indent=4)

更新:simplejsonがベースPythonに組み込まれました。置き換えるだけsimplejsonjson、きれいに印刷された/フォーマットされた/縮小されていないjsonが得られます。

jsonpickle.set_encoder_options('json', sort_keys=True, indent=4)
于 2010-12-05T14:43:06.173 に答える