Работа с JSON в Python
17.04.2018
Теги: JSON • Python • Web-разработка
JSON (JavaScript Object Notation) — текстовый формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript.
JSON основан на двух структурах данных:
- Коллекция пар ключ-значение (объект)
- Упорядоченный список значений (массив)
Это универсальные структуры данных. Почти все современные языки программирования поддерживают их в какой-либо форме. В нотации JSON это выглядит так:
Объект — неупорядоченный набор пар ключ-значение. Объект начинается с { и заканчивается }. Ключ и значение разделяются двоеточием, сами пары ключ-значение разделяются запятой.
{"email" : "ivanov@mail.ru", "name" : "Иванов Иван Иванович"}
Массив — упорядоченная коллекция значений. Массив начинается с [ и заканчивается ]. Значения разделены запятой.
["ivanov@mail.ru", "petrov@mail.ru", "sidorov@mail.ru"]
Значение может быть строкой в двойных кавычках, числом, true
, false
, null
, объектом или массивом. Эти структуры могут быть вложенными.
Строка — коллекция нуля или больше символов Unicode, заключенная в двойные кавычки, используя \ (обратную косую черту) в качестве символа экранирования. Для представления числа используется только десятичная система счисления.
{ "id": 765, "email": "ivanov@mail.ru", "name": "Иванов Иван Иванович", "age": 45, "admin": false, "friends": [123,456,789] }
Модуль json позволяет легко записывать и читать данные в формате JSON.
Для чтения данных в JSON-формате есть два метода:
json.load()
— метод считывает файл в формате JSON и возвращает объект Pythonjson.loads()
— метод считывает строку в формате JSON и возвращает объект Python
Для записи информации в формате JSON также два метода:
json.dump()
— метод записывает объект Python в файл в формате JSONjson.dumps()
— метод преобразует объект Python в строку в формате JSON
Таблица конвертации данных Python в JSON | Таблица конвертации JSON в данные Python | ||
---|---|---|---|
Python | JSON | JSON | Python |
dict | object | object | dict |
list, tuple | array | array | list |
str | string | string | str |
int, float | number(int, real) | number(int, real) | int, float |
True, False | true, false | true, false | True, False |
None | null | null | None |
Примеры
Преобразуем json-строку в словарь:
import json string = '{"id":765, "email":"ivanov@mail.ru", "surname":"Иванов", "age":45, "admin":false, "friends":[123,456,789]}' data = json.loads(string) print(data["email"]) print(data["surname"]) print(data["admin"]) print(data["friends"])
ivanov@mail.ru Иванов False [123, 456, 789]
Читаем json-данные из файла и преобразуем в словарь:
import json # читаем json-данные из файла и преобразуем в словарь with open('data.json', encoding = 'UTF-8') as file: data = json.load(file) print(data["email"]) print(data["surname"]) print(data["admin"]) print(data["friends"])
ivanov@mail.ru Иванов False [123, 456, 789]
Преобразуем словарь в json-строку:
import json data = {"id":765, "email":"ivanov@mail.ru", "surname":"Иванов", "age":45, "admin":False, "friends":[123,456,789]} # преобразуем словарь в json-строку string = json.dumps(data) print(string) # преобразуем словарь в json-строку string = json.dumps(data, ensure_ascii = False) print(string)
{"id": 765, "email": "ivanov@mail.ru", "surname": "\u0418\u0432…", "age": 45, "admin": false, "friends": [123, 456, 789]} {"id": 765, "email": "ivanov@mail.ru", "surname": "Иванов", "age": 45, "admin": false, "friends": [123, 456, 789]}
Преобразуем словарь в json и записываем в файл:
import json data = {"id":765, "email":"ivanov@mail.ru", "surname":"Иванов", "age":45, "admin":False, "friends":[123,456,789]} # преобразуем словарь в json и записываем в файл with open('data.json', 'w', encoding = 'UTF-8') as file: json.dump(data, file) # преобразуем словарь в json и записываем в файл with open('data.json', 'w', encoding = 'UTF-8') as file: json.dump(data, file, ensure_ascii = False)
- Сервис DaData: подсказки и стандартизация
- Laravel. Аксессоры и мутаторы
- Магазин на Laravel 7, часть 19. Панель управления, добавляем редактор для страниц сайта
- WordPress. Обработка POST-запросов. Часть 2
- WordPress. Загрузка файлов. Часть 3 из 3
- Магазин на Yii2, часть 18. Корзина покупателя, часть вторая
- Объектно-ориентированное программирование в Python
Поиск: JSON • Python • Web-разработка