JSON в Python

В этой главе мы расскажем, как использовать язык Python для кодирования и декодирования объектов JSON.

JSON (JavaScript Object Notation) — это легковесный формат обмена данными, удобный для чтения и записи людьми.


Функции JSON

Чтобы использовать функции JSON, необходимо импортировать библиотеку json:import json。

ФункцияОписание
json.dumps Кодирует объекты Python в строки JSON
json.loadsДекодирует закодированные строки JSON в объекты Python

json.dumps

json.dumps используется для кодирования объектов Python в строки JSON.

Синтаксис

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

Пример

Следующий пример кодирует массив в данные формата JSON:

Пример

#!/usr/bin/python
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps(data)
print(data2)

Результат выполнения приведённого выше кода:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

Используйте параметры для форматирования вывода данных JSON:

Пример

#!/usr/bin/python
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps({'a': 'Example', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)

Результат выполнения приведённого выше кода:

{
    "a": "Example",
    "b": 7
}

Таблица преобразования примитивных типов Python в типы JSON:

Python JSON
dict объект
list, tuple array
str, unicode string
int, long, float число
True истина
False false
Отсутствует null

json.loads

json.loads используется для декодирования данных JSON. Эта функция возвращает тип данных полей Python.

Синтаксис

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

Пример

В следующем примере показано, как Python декодирует объекты JSON:

Пример

#!/usr/bin/python
import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = json.loads(jsonData)
print(text)

Результат выполнения приведённого выше кода:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

Таблица преобразования типов JSON в типы Python:

JSON Python
объект dict
array list
string unicode
число (int) int, long
число (real) float
истина True
false False
null Отсутствует

Дополнительную информацию см. в:https://docs.python.org/2/library/json.html。


Использование сторонней библиотеки: Demjson

Demjson — это сторонняя библиотека модулей для Python, которую можно использовать для кодирования и декодирования данных JSON, и она включает функции форматирования и проверки JSONLint.

Адрес Github:https://github.com/dmeranda/demjson

Официальный сайт:http://deron.meranda.us/python/demjson/

Настройка окружения

Прежде чем использовать Demjson для кодирования или декодирования данных JSON, нам нужно сначала установить модуль Demjson. В этом руководстве мы скачаемDemjsonи установим:

$ tar -xvzf demjson-2.2.3.tar.gz
$ cd demjson-2.2.3
$ python setup.py install

Дополнительные инструкции по установке см. в:http://deron.meranda.us/python/demjson/install

Функции JSON

ФункцияОписание
encode Кодирует объекты Python в строки JSON
decodeДекодирует закодированные строки JSON в объекты Python

encode

Функция encode() в Python используется для кодирования объектов Python в строки JSON.

Синтаксис

demjson.encode(self, obj, nest_level=0)

Пример

Следующий пример кодирует массив в данные формата JSON:

Пример

#!/usr/bin/python
import demjson

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = demjson.encode(data)
print(json)

Результат выполнения приведённого выше кода:

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

decode

Python может использовать функцию demjson.decode() для декодирования данных JSON. Эта функция возвращает тип данных полей Python.

Синтаксис

demjson.decode(self, txt)

Пример

В следующем примере показано, как Python декодирует объекты JSON:

Пример

#!/usr/bin/python
import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)
print(text)

Результат выполнения приведённого выше кода:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Другие расширения