Сериализация файлов 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
возможно, что-то похожее, или в худшем случае вы можете декодировать и кодировать снова.