Учебник по модулю Python JSON
Кодировать объекты Python как строки JSON и декодировать строки JSON в объекты Python
В Python модуль json предоставляет API, аналогичный для преобразования объектов Python в памяти в сериализованное представление, известное как JavaScript Object Notation (JSON) и наоборот.
Кодировать объекты Python как строки JSON
Основное использование:
json.dump(obj, fp,
skipkeys=False,
ensure_ascii=True,
check_circular=True,
allow_nan=True,
cls=None,
indent=None,
separators=None,
default=None,
sort_keys=False, **kw)
Вышеприведенный метод сериализует obj как поток в формате JSON для fp (.write () - поддерживающий файловый объект), используя следующую таблицу преобразования.
питон | JSON |
---|---|
ДИКТ | объект |
список, кортеж | массив |
ул | строка |
int, float, int и float-производные Enums | число |
Правда | правда |
Ложь | ложный |
Никто | ноль |
Опции :
- Значением по умолчанию для skipkeys является False. Если skipkeys имеет значение True, то ключи dict, которые не имеют базового типа (str, int, float, bool, None), будут пропущены вместо вызова TypeError.
- Модуль json всегда создает объекты str, а не байты. Следовательно, fp.write () должен поддерживать ввод str.
- Если sure_ascii имеет значение True (по умолчанию), на выходе гарантированно будут экранированы все входящие символы, не входящие в ASCII. Если sure_ascii имеет значение False, эти символы будут выводиться как есть.
- Значением по умолчанию check_circular является True. Если check_circular имеет значение False, то проверка циклической ссылки для типов контейнеров будет пропущена, а циклическая ссылка приведет к ошибке OverflowError.
- Значением по умолчанию allow_nan является True. Если allow_nan имеет значение False, то это будет ValueError для сериализации значений диапазона с плавающей запятой (nan, inf, -inf) в строгом соответствии со спецификацией JSON вместо использования эквивалентов JavaScript (NaN, Infinity, -Infinity).
- Если отступ - неотрицательное целое число или строка, то элементы массива JSON и члены объекта будут напечатаны с этим уровнем отступа. Уровень отступа 0, отрицательный или "" будет вставлять только новые строки. Ни один (по умолчанию) выбирает наиболее компактное представление. Используя отступ целочисленного положительного отступа, много пробелов на уровень. Если отступ - это строка (например, ""), эта строка используется для отступа на каждом уровне.
- Используйте (',', ':') по умолчанию, если отступ не None.
- Значением по умолчанию для sort_keys является False. Если sort_keys равен True, то выходные словари будут отсортированы по ключу.
Примеры: словари Python для строк JSON
Код:
import json
student = {"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'V', "Name":'David', "Roll_no":8},
"103":{"class":'V', "Name":'Samiya', "Roll_no":12}}
print(json.dumps(student));
Выход:
{"103": {"class": "V", "Name": "Samiya", "Roll_no": 12}, "102": {"class": "V", "Name": "David", "Roll_no": 8}, "101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}
Примеры: словари Python для строк JSON (отсортировано по ключу)
Код:
import json
student = {"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'V', "Name":'David', "Roll_no":8},
"103":{"class":'V', "Name":'Samiya', "Roll_no":12}}
print(json.dumps(student, sort_keys=True));
Выход:
{"101": {"Name": "Rohit", "Roll_no": 7, "class": "V"}, "102": {"Name": "David", "Roll_no": 8, "class": "V"}, "103": {"Имя": "Самия", "Roll_no": 12, "класс": "V"}}
Примеры: кортеж Python в массив JSON
Код:
import json
tup1 ='Red', 'Black', 'White';
print(json.dumps(tup1));
Выход:
[«Красный», «Черный», «Белый»]
Примеры: список Python для массива JSON
Код:
import json
list1 = [5, 12, 13, 14];
print(json.dumps(list1));
Выход :
[5, 12, 13, 14]
Примеры: строка Python в строку JSON
Код:
import json
string1 ='Python and JSON';
print(json.dumps(string1));
Выход:
"Питон и JSON"
Примеры: логические значения Python для логических значений JSON
Код:
import json
x = True;
print(json.dumps(x));
Выход:
правда
Примеры: Python int, float, int и float-производные Enums to JSON number
Код:
import json
x = -456;
y = -1.406;
z = 2.12e-10
print(json.dumps(x));
print(json.dumps(y));
print(json.dumps(z));
Выход:
-456 -1,406 2.12e-10
Декодировать строки JSON в объекты Python
Основное использование:
json.load(fp,
cls=None,
object_hook=None,
parse_float=None,
parse_int=None,
parse_constant=None,
object_pairs_hook=None, **kw)
Вышеупомянутый метод десериализует fp (aread () - поддерживающий файловый объект, содержащий документ JSON) в объект Python, используя следующую таблицу преобразования.
JSON | питон |
---|---|
объект | ДИКТ |
массив | список |
строка | ул |
число (int) | ИНТ |
число (реальное) | поплавок |
правда | Правда |
ложный | Ложь |
ноль | Никто |
Опции :
- Значением по умолчанию для skipkeys является False. Если skipkeys имеет значение True, то ключи dict, которые не имеют базового типа (str, int, float, bool, None), будут пропущены вместо вызова TypeError.
- Модуль json всегда создает объекты str, а не байты. Следовательно, fp.write () должен поддерживать ввод str.
- Если sure_ascii имеет значение True (по умолчанию), на выходе гарантированно будут экранированы все входящие символы, не входящие в ASCII. Если sure_ascii имеет значение False, эти символы будут выводиться как есть.
- Значением по умолчанию check_circular является True. Если check_circular имеет значение False, то проверка циклической ссылки для типов контейнеров будет пропущена, а циклическая ссылка приведет к ошибке OverflowError.
- Значением по умолчанию allow_nan является True. Если allow_nan имеет значение False (по умолчанию: True), то это будет ValueError для сериализации значений диапазона с плавающей запятой (nan, inf, -inf) в строгом соответствии со спецификацией JSON вместо использования эквивалентов JavaScript (NaN, Infinity, -Infinity).
- Если отступ - неотрицательное целое число или строка, то элементы массива JSON и члены объекта будут напечатаны с этим уровнем отступа. Уровень отступа 0, отрицательный или "" будет вставлять только новые строки. Ни один (по умолчанию) выбирает наиболее компактное представление. Используя отступ целочисленного положительного отступа, много пробелов на уровень. Если отступ - это строка (например, ""), эта строка используется для отступа на каждом уровне.
- Используйте (',', ':') по умолчанию, если отступ не None.
- default (obj) - это функция, которая должна возвращать сериализованную версию obj или вызывать TypeError. По умолчанию просто возникает ошибка TypeError.
- Значением по умолчанию для sort_keys является False. Если sort_keys равен True, то выходные словари будут отсортированы по ключу.
Примеры: строки JSON в словарях Python
Код:
import json
json_data ='{"103": {"class": "V", "Name": "Samiya", "Roll_n": 12}, "102": {"class": "V", "Name": "David", "Roll_no": 8}, "101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}';
print(json.loads(json_data));
Выход:
{"103": {"class": "V", "Name": "Samiya", "Roll_no": 12}, "102": {"class": "V", "Name": "David", "Roll_no": 8}, "101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}
Примеры: массив JSON Python-кортеж
Код:
import json
Json_array = ["Red", "Black", "White"]
print(json.dumps(Json_array));
Выход:
[«Красный», «Черный», «Белый»]
Примеры: список Python для массива JSON
Код:
import json
list1 = [5, 12, 13, 14];
print(json.dumps(list1));
Выход:
[5, 12, 13, 14]
Примеры: строка JSON в строку Python
Код:
import json
Json_string = "Python and JSON"
print(json.dumps(Json_string));
Выход:
"Питон и JSON"
Версия Python: 3.4
Предыдущая: Работа с JSON и JavaScript
Далее: Работа с JSONPath и JavaScript
Новый контент: Composer: менеджер зависимостей для PHP , R программирования