Сериализация файлов JSON с символами новой строки в Python

Я иногда использую 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)", то вся сериализация будет помещена в одну строку. Это означает, что я не могу выполнить поиск файла для записей, которые нужно проверять вручную, как если бы я был файлом CSV. Есть ли способ сделать так, чтобы каждый элемент объекта (например, каждая запись в dict или каждый элемент в списке) помещался на отдельной строке в выходном файле JSON?

Благодарю.

2 ответа

Jsonpickle использует один из бэкэндов json, и вы можете попробовать это в своем коде:

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

Обновление: simplejson был включен в базовый питон, просто замените simplejson за json и вы получите довольно напечатанный / отформатированный / не минимизированный JSON

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

(simple)json.dump() имеет indent аргумент. jsonpickle возможно, что-то похожее, или в худшем случае вы можете декодировать и кодировать снова.

Другие вопросы по тегам