JSON
json_obj = json.load(json_file) # з файла
json_obj = json.loads(json_str) # з рядка
with open('sw_templates.json', 'w') as json_file:
json.dump(json_obj, json_file) # у файл
json_str = json.dumps(json_obj, separators=(',',':')) # у рядокJSON (JavaScript Object Notation) – це текстовий формат для зберігання та обміну даними.
Читання
Файл sw_templates.json:
Для чтения в модуле json есть два метода:
json.load- метод считывает файл в формате JSON и возвращает объекты Pythonjson.loads- метод считывает строку в формате JSON и возвращает объекты Python
json.load (з файлу)
json.load (з файлу)Чтение файла в формате JSON в объект Python (файл json_read_load.py):
Вывод будет таким:
json.loads (з рядка)
json.loads (з рядка)Считывание строки в формате JSON в объект Python (файл json_read_loads.py):
Результат будет аналогичен предыдущему выводу.
Запис
Запись файла в формате JSON также осуществляется достаточно легко.
Для записи информации в формате JSON в модуле json также два метода:
json.dump- метод записывает объект Python в файл в формате JSONjson.dumps- метод возвращает строку в формате JSON
json.dumps (в рядок)
json.dumps (в рядок)Преобразование объекта в строку в формате JSON (json_write_dumps.py):
Метод json.dumps подходит для ситуаций, когда надо вернуть строку в формате JSON. Например, чтобы передать ее API.
json.dump (у файл)
json.dump (у файл)Запись объекта Python в файл в формате JSON (файл json_write_dump.py):
Когда нужно записать информацию в формате JSON в файл, лучше использовать метод dump.
Додаткові параметри методів запису
Методам dump и dumps можно передавать дополнительные параметры для управления форматом вывода.
По умолчанию эти методы записывают информацию в компактном представлении. Как правило, когда данные используются другими программами, визуальное представление данных не важно. Если же данные в файле нужно будет считать человеку, такой формат не очень удобно воспринимать.
К счастью, модуль json позволяет управлять подобными вещами.
Передав дополнительные параметры методу dump (или методу dumps), можно получить более удобный для чтения вывод (файл json_write_indent.py):
Теперь содержимое файла sw_templates.json выглядит так:
Изменение типа данных
Еще один важный аспект преобразования данных в формат JSON: данные не всегда будут того же типа, что исходные данные в Python.
Например, кортежи при записи в JSON превращаются в списки:
Так происходит из-за того, что в JSON используются другие типы данных и не для всех типов данных Python есть соответствия.
Таблица конвертации данных Python в JSON:
Python
JSON
dict
object
list, tuple
array
str
string
int, float
number
True
true
False
false
None
null
Таблица конвертации JSON в данные Python:
JSON
Python
object
dict
array
list
string
str
number (int)
int
number (real)
float
true
True
false
False
null
None
Ограничение по типам данных
В формат JSON нельзя записать словарь, у которого ключи - кортежи:
С помощью дополнительного параметра можно игнорировать подобные ключи:
Кроме того, в JSON ключами словаря могут быть только строки. Но, если в словаре Python использовались числа, ошибки не будет. Вместо этого выполнится конвертация чисел в строки:
Last updated