В чем разница между JSON.dump () и json.dumps () в python?
Я искал в этой официальный документ, чтобы найти разницу между json.dump () и json.dumps () в python. Понятно, что они связаны с возможностью записи файла.
но какова детальная разница между ними и в каких ситуациях один имеет больше преимуществ, чем другие?
3 ответов:
нет почти ничего другого, чтобы добавить, кроме того, что говорят документы, если вы хотите сбросить JSON в файл / сокет или что-то еще, тогда вы должны пойти на
dump(). Если вам это нужно только как строка (для печати, разбора или что-то еще), то используйтеdumps()(строка дампа)как отметил Антии Хаапала в этом ответе, есть некоторые незначительные различия на
ensure_asciiповедение, это в основном из-за того, как основнойwrite()функция работает, то работает на куски, а не на всю строку, проверьте ответ для получения более подробной информации об этом.
json.dump()сериализовать obj как JSON-форматированный поток в fp (a .записать()-вспомогательная файл-как объект
если ensure_ascii имеет значение False, некоторые фрагменты, записанные в fp, могут быть экземплярами unicode
json.dumps()сериализовать obj в формате JSON str
если ensure_ascii является ложным, результат может содержат символы, отличные от ASCII, и возвращаемое значение может быть экземпляром unicode
одна заметная разница в Python 2 если вы используете
ensure_ascii=False,dumpправильно запишет кодированные данные UTF-8 в файл (если вы не использовали 8-битные строки с расширенными символами, которые не являются UTF-8):
dumpsС другой стороны, сensure_ascii=Falseпроизвестиstrилиunicodeпросто в зависимости от того, какие типы вы использовали для строк:сериализовать obj в форматированный JSON str с помощью этой таблицы преобразования. Если ensure_ascii имеет значение False, результат может содержать символы, отличные от ASCII, и возвращаемое значение может быть
unicodeэкземпляр.(выделено мной). Обратите внимание, что это все еще может быть
strэкземпляра.таким образом, вы не можете использовать его возвращаемое значение для сохранения структуры в файл без проверки которого формат был возвращен и, возможно, играл с
unicode.encode.это, конечно, больше не является допустимым беспокойством в Python 3, так как этого больше нет 8-бит/Юникод путаница.
как
loadvsloads,loadсчитает весь файл должен быть одним документом JSON, поэтому вы не можете использовать его для чтения нескольких документов JSON с ограниченной новой строкой из одного файла.
Comments