Работа с JSON в Python

17.04.2018

Теги: JSONPythonWeb-разработка

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 и возвращает объект Python
  • json.loads() — метод считывает строку в формате JSON и возвращает объект Python

Для записи информации в формате JSON также два метода:

  • json.dump() — метод записывает объект Python в файл в формате JSON
  • json.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)

Поиск: JSON • Python • Web-разработка

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.