кодесурса
«JSON

Учебник по модулю Python JSON

script1adsense2code
script1adsense3code

Кодировать объекты 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code