Функция load() модуля json в python

Convert from Python to JSON

If you have a Python object, you can convert it into a JSON string by
using the method.

Example

Convert from Python to JSON:

import json# a Python object (dict):x = {  «name»:
«John»,  «age»: 30,  «city»: «New York»}#
convert into JSON:y = json.dumps(x)# the result is a JSON string:
print(y)

You can convert Python objects of the following types, into JSON strings:

  • dict
  • list
  • tuple
  • string
  • int
  • float
  • True
  • False
  • None

Example

Convert Python objects into JSON strings, and print the values:

import jsonprint(json.dumps({«name»: «John», «age»: 30}))print(json.dumps())print(json.dumps((«apple», «bananas»)))
print(json.dumps(«hello»))print(json.dumps(42))print(json.dumps(31.76))print(json.dumps(True))print(json.dumps(False))print(json.dumps(None))

When you convert from Python to JSON, Python objects are converted into the JSON (JavaScript) equivalent:

Python JSON
dict Object
list Array
tuple Array
str String
int Number
float Number
True true
False false
None null

Example

Convert a Python object containing all the legal data types:

import jsonx = {  «name»:
«John»,  «age»: 30,  «married»: True, 
«divorced»: False,  «children»: («Ann»,»Billy»),  «pets»:
None,  «cars»:
}print(json.dumps(x))

Разбираем JSON-данные в Python

Если мы хотим выполнить обратную операцию и быстро раскодировать формат JSON средствами языка Python, нам поможет метод loads. Он позволяет без труда преобразовать JSON в объект, и с этим объектом мы сможем легко взаимодействовать в программе.

import json
jsonData = """ {
    "ID"       : 310450,
    "login"    : "admin",
    "name"     : "James Bond",
    "password" : "root",
    "phone"    : 3330303,
    "email"    : " bond@mail.com",
    "online"   : true
} """
dictData = json.loads(jsonData)
print(dictData"name"])
print(dictData"phone"])
print(dictData"email"])
print(dictData"online"])

James Bond
3330303
bond@mail.com 
True

Мы видим, что произошло обратное, а литерал true автоматически преобразовался в True. Это произошло, чтобы была возможность работать с ним средствами Python.

P.S. Итак, мы выполнили кодирование и декодирование информации в JSON-формате с помощью встроенных средств Python. Благодаря наличию удобных методов из модуля json (dumps и loads), эти операции были осуществлены довольно просто. Остаётся добавить, что функции loads и dumps способны взаимодействовать и с другими видами объектов, включая более сложные (например, со вложенными разновидностями словарей со множеством строковых значений).

json.dumps()

В этом разделе мы узнаем, как преобразовать данные Python в данные JSON. Задача очень простая. Сначала импортируйте модуль json. Затем используйте функцию json.dumps() для декодирования данных json. Ниже приведен простой пример функции json.dumps() в Python.

import json

# initialize different data
str_data = 'normal string'
int_data = 1
float_data = 1.50
list_data = 
nested_list = 
dictionary = {
    'int': int_data,
    'str': str_data,
    'float': float_data,
    'list': list_data,
    'nested list': nested_list
}

# convert them to JSON data and then print it
print('String :', json.dumps(str_data))
print('Integer :', json.dumps(int_data))
print('Float :', json.dumps(float_data))
print('List :', json.dumps(list_data))
print('Nested List :', json.dumps(nested_list, indent=2))
print('Dictionary :', json.dumps(dictionary, indent=2))  # the json data will be indented

Вы получите такой результат.

String : "normal string"
Integer : 1
Float : 1.5
List : 
Nested List : 
]
Dictionary : {
  "int": 1,
  "str": "normal string",
  "float": 1.5,
  "list": ,
  "nested list": 
  ]
}

Python to JSON (Encoding)

JSON Library of Python performs following translation of Python objects into JSON objects by default

Python JSON
dict Object
list Array
unicode String
number — int, long number – int
float number – real
True True
False False
None Null

Converting Python data to JSON is called an Encoding operation. Encoding is done with the help of JSON library method – dumps()

JSON dumps() in Python

json.dumps() in Python is a method that converts dictionary objects of Python into JSON string data format. It is useful when the objects are required to be in string format for the operations like parsing, printing, etc.

Now lets perform our first json.dumps encoding example with Python:

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ,
  "cars": 
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)

Output:

{"person": {"name": "Kenn", "sex": "male", "age": 28}})

Let’s see an example of Python write JSON to file for creating a JSON file of the dictionary using the same function dump()

# here we create new data_file.json file with write mode using file i/o operation 
with open('json_file.json', "w") as file_write:
# write json data into file
json.dump(person_data, file_write)

Output:

Nothing to show…In your system json_file.json is created. You can check that file as shown in the below write JSON to file Python example.

dumps¶

(obj, sort_keys=None, cls=<class ‘json_tricks.encoders.TricksEncoder’>, obj_encoders=, extra_obj_encoders=(), primitives=False, compression=None, allow_nan=False, conv_str_byte=False, fallback_encoders=(), **jsonkwargs)

Convert a nested data structure to a json string.

Parameters:
  • obj – The Python object to convert.
  • sort_keys – Keep this False if you want order to be preserved.
  • cls – The json encoder class to use, defaults to NoNumpyEncoder which gives a warning for numpy arrays.
  • obj_encoders – Iterable of encoders to use to convert arbitrary objects into json-able promitives.
  • extra_obj_encoders – Like obj_encoders but on top of them: use this to add encoders without replacing defaults. Since v3.5 these happen before default encoders.
  • fallback_encoders – These are extra obj_encoders that 1) are ran after all others and 2) only run if the object hasn’t yet been changed.
  • allow_nan – Allow NaN and Infinity values, which is a (useful) violation of the JSON standard (default False).
  • conv_str_byte – Try to automatically convert between strings and bytes (assuming utf-8) (default False).
Returns:

The string containing the json-encoded version of obj.

Other arguments are passed on to cls. Note that sort_keys should be false if you want to preserve order.

Стандартные уступки¶

Формат JSON определён в RFC 4627. Этот раздел описывает соответствие уровня модуля этому RFC. Для простоты, подклассы и , и параметры, отличные от явноупомянутых, не поддерживаются.

Этот модуль не строго соответствует RFC, реализуя некоторые расширения, которые корректны для JavaScript, но не для JSON. В частности:

  • Не-объекты верхнего уровня и не-массивы принимаются и выводятся
  • Значения Infinite и NaN принимаются и выводятся
  • Повторяющиеся имена в объекте принимаются и выводится только значение последней пары ключ/значение

Так как RFC разрешает RFC-поддерживающим парсерам принимать вводимый текст, который не соответствует RFC, в этом десериализер модуля технически соответствует RFC при настройках по умолчанию.

Кодировки символов

RFC рекомендует, чтобы JSON был представлен в UTF-8, UTF-16, или UTF-32, с UTF-8 по умолчанию. Соответственно, этот модуль использует по умолчанию UTF-8.

Десериализатор модуля напрямую работает только с ASCII-совместимой кодировкой; UTF-16, UTF-32, и другие ASCII-несовместимые кодировки требуют предварительной обработки, как это описанов документации, в разделе про параметр encoding десериализации.

RFC также описывает ограниченную технику определения кодировки для JSON текста; десериализатор этого модуля не реализует никакой техники для определения кодировки.

Согласно тому, что разрешено, но не требуется согласно RFC, сериализатор этого модуля по умолчанию устанавливает ensure_ascii=True, таким образом в выводе будут находиться только ASCII символы.

Значения верхнего уровня, не являющиеся объектами или массивами

RFC определяет, что значения верхнего уровня в JSON тексте должны быть либо JSON объектами, либо массивами ( или Python). Десериализор этого модуля также принимает текст, состоящий исключительно из значений null, boolean, number, или string JSON:

>>> just_a_json_string = '"spam and eggs"'  # Not by itself a valid JSON text
>>> json.loads(just_a_json_string)
u'spam and eggs'

Сам по себе этот модуль не вклюает способа, который позволили бы обозначить этот текст как недопустимый. Так же и сериализатор этого модуля принимает значения Python , , numeric, и на вход и генерирует выходной текст, содержащий исключительно значения JSON верхнего уровня null, boolean, number, или string без возбуждени исключения:

>>> neither_a_list_nor_a_dict = u"spam and eggs"
>>> json.dumps(neither_a_list_nor_a_dict)  # The result is not a valid JSON text
'"spam and eggs"'

Сериализатор данного модуля сам по себе не предоставляет способ обеспечить вышеупомянутые ограничения.

Значения Infinite и NaN

RFC не допускает представления для занчений infinite или NaN. Не смотря на это, по умолчанию, этот модуль принимает и выводит , , и как если бы они были корректными значениями JSON:

>>> # Ни один из этих вызовов не вызывает исключения, но результат не является корректным JSON
>>> json.dumps(float('-inf'))
'-Infinity'
>>> json.dumps(float('nan'))
'NaN'
>>> # То же самое при десериализации
>>> json.loads('-Infinity')
-inf
>>> json.loads('NaN')
nan

В сериализаторе параметр allow_nan может быть использован для изменения этого поведения. В десериализаторе для изменения поведения используется параметр parse_constant.

Повторяющиеся имена в объекте

Спецификация RFC говорит, что имена в объекте JSON должны быть уникальными, но не определяет, как должны обрабатываться повторяющиеся имена. По умолчанию, этот модуль не вызывает исключения, вместо этого он игнорирует все пары ключ/значение, кроме последней:

>>> weird_json = '{"x": 1, "x": 2, "x": 3}'
>>> json.loads(weird_json)
{u'x': 3}

Для изменения этого поведения может использоваться параметр object_pairs_hook.

5 последних уроков рубрики «Разное»

  • Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.

  • Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов

    Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

  • Создание вебсайта — процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.

  • Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

Параметры

При сериализации данных в JSON могут возникнуть проблемы. Например, его будет не очень удобно читать, ведь удаляются все пробелы. В большинстве случаев этот вариант вполне хорош, но порой нужно внести небольшие изменения. К примеру, добавить пробелы, чтобы JSON было удобнее читать. У и есть несколько параметров, которые дают необходимую гибкость. О некоторых из них мы и поговорим.

Pretty-Printing

Сделать JSON более удобочитаемым (pretty-printing) — очень просто. Нужно лишь передать целое число в параметр : 

import json
data = {'people':}
json.dumps(data, indent=4)
{
    "people": 
}

Это довольно полезно. Особенно если вам часто приходится читать JSON во время работы. Также вы можете использовать использовать команду прямо в командной строке. Если вы хотите удобочитаемый JSON, наберите в командной строке следующий код:

$ echo '{"people":}' | python -m json.tool
{
    "people": 
}

Сортировка

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

То есть, порядок не гарантируется. Но навести его реально. Сделать это можно с помощью передачи в параметр в методах или .

import json
data = {'people':}
json.dumps(data, sort_keys=True, indent=4)
{
    "people": 
}

ASCII-текст

По умолчанию проверяет, имеет ли ваш текст в словаре кодировку ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются. Это показано в следующем примере:

import json
data = {'item': 'Beer', 'cost':'£4.00'}
jstr = json.dumps(data, indent=4)
print(jstr)
{
    "item": "Beer",
    "cost": "\u00a34.00"
}

Но это не всегда приемлемо. Во многих случаях вы бы хотели сохранить символы Unicode нетронутыми. Для этого нужно передать в параметр значение .

jstr = json.dumps(data, ensure_ascii=False, indent=4)
print(jstr)
{
    "item": "Beer",
    "cost": "£4.00"
}

enum instances¶

Support for enums was added in Python 3.4. Support for previous versions of Python is available with the enum 34 package.

(obj, primitives=False, with_enum_value=False)

Encodes an enum instance to json. Note that it can only be recovered if the environment allows the enum to be
imported in the same way.
:param primitives: If true, encode the enum values as primitive (more readable, but cannot be restored automatically).
:param with_enum_value: If true, the value of the enum is also exported (it is not used during import, as it should be constant).

class (cls_lookup_map=None)

This hook tries to convert json encoded by enum_instance_encode back to it’s original instance.
It only works if the environment is the same, e.g. the enum is similarly importable and hasn’t changed.

By default cannot be encoded as enums since they cannot be differenciated from integers. To serialize them, you must use encode_intenums_inplace which mutates a nested data structure (in place!) to replace any by their representation. If you serialize this result, it can subsequently be loaded without further adaptations.

Пример схемы JSON

Ниже приведена базовая схема JSON, которая охватывает классическое описание каталога продукции —

{
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "Product",
   "description": "A product from Acme's catalog",
   "type": "object",
	
   "properties": {
	
      "id": {
         "description": "The unique identifier for a product",
         "type": "integer"
      },
		
      "name": {
         "description": "Name of the product",
         "type": "string"
      },
		
      "price": {
         "type": "number",
         "minimum": 0,
         "exclusiveMinimum": true
      }
   },
	
   "required": 
}

Давайте проверим различные важные ключевые слова, которые можно использовать в этой схеме —

Sr.No. Ключевое слово и описание
1

$ схема

Ключевое слово $ schema указывает, что эта схема написана согласно черновой спецификации v4.

2

заглавие

Вы будете использовать это, чтобы дать название вашей схеме.

3

описание

Небольшое описание схемы.

4

тип

Ключевое слово type определяет первое ограничение для наших данных JSON: это должен быть объект JSON.

5

свойства

Определяет различные ключи и их типы значений, минимальные и максимальные значения, которые будут использоваться в файле JSON.

6

требуется

Это хранит список обязательных свойств.

7

минимальный

Это ограничение, накладываемое на значение, и представляет минимально допустимое значение.

8

exclusiveMinimum

Если присутствует «exclusiveMinimum» и имеет логическое значение true, экземпляр действителен, если он строго больше значения «минимума».

9

максимальная

Это ограничение, которое будет наложено на значение и представляет собой максимально допустимое значение.

10

exclusiveMaximum

Если присутствует «exclusiveMaximum» и имеет логическое значение true, экземпляр действителен, если он строго ниже значения «Maximum».

11

multipleOf

Числовой экземпляр действителен для «множественного значения», если результатом деления экземпляра по значению этого ключевого слова является целое число.

12

максимальная длина

Длина экземпляра строки определяется как максимальное количество ее символов.

13

MINLENGTH

Длина экземпляра строки определяется как минимальное количество ее символов.

14

шаблон

Экземпляр строки считается допустимым, если регулярное выражение соответствует экземпляру успешно.

Вы можете проверить http://json-schema.org для полного списка ключевых слов, которые можно использовать при определении схемы JSON. Приведенную выше схему можно использовать для проверки правильности следующего кода JSON:

JSON — Сравнение с XML

JSON и XML являются удобочитаемыми форматами и не зависят от языка. Они оба поддерживают создание, чтение и декодирование в реальных ситуациях. Мы можем сравнить JSON с XML, основываясь на следующих факторах:

Структура JSON

Готовьтесь. Я собираюсь показать реальный пример JSON— такой же, какой вы встретите в реальной жизни. Это нормально, подразумевается что JSON является читаемым для любого, кто пользовался С-языками, а Python – это С-язык, так что мы говорим о вас!

Python

{
«firstName»: «Jane»,
«lastName»: «Doe»,
«hobbies»: ,
«age»: 35,
«children»:
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

{

«firstName»»Jane»,

«lastName»»Doe»,

«hobbies»»running»,»sky diving»,»singing»,

«age»35,

«children»

{

«firstName»»Alice»,

«age»6

},

{

«firstName»»Bob»,

«age»8

}

}

Как видите, JSON поддерживает примитивные типы, такие как строки python и числа, а также вложенные и объекты.

НУ что же, вы пережили первый контакт с диким JSON. Теперь вам нужно научиться приручать его!

Packaging

rustup default nightly
pip wheel --no-binary=orjson orjson

This is an example of building a wheel using the repository as source,
installed from upstream, and a pinned version of Rust:

pip install maturin
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2021-03-25 --profile minimal -y
maturin build --no-sdist --release --strip --manylinux off
ls -1 target/wheels

Problems with the Rust nightly channel may require pinning a version.
is known to be ok.

orjson is tested for amd64 and aarch64 on Linux, macOS, and Windows. It
may not work on 32-bit targets. It has recommended
specified in so it is recommended to either not set
or include these options.

There are no runtime dependencies other than libc.

orjson’s tests are included in the source distribution on PyPI. It is
necessarily to install dependencies from PyPI specified in
. These require a C compiler. The tests do not
make network requests.

The tests should be run as part of the build. It can be run like this:

pip install -r test/requirements.txt
pytest -q test

Простой пример в JSON

В следующем примере показано, как использовать JSON для хранения информации, связанной с книгами, в зависимости от их темы и издания.

{
   "book": 
}

После понимания вышеупомянутой программы мы попробуем другой пример. Давайте сохраним код ниже как json.htm

<html>
   <head>
      <title>JSON example</title>
      <script language = "javascript" >
         var object1 = { "language" : "Java", "author"  : "herbert schildt" };
         document.write("<h1>JSON with JavaScript example</h1>");
         document.write("<br>");
         document.write("<h3>Language = " + object1.language+"</h3>");  
         document.write("<h3>Author = " + object1.author+"</h3>");   

         var object2 = { "language" : "C++", "author"  : "E-Balagurusamy" };
         document.write("<br>");
         document.write("<h3>Language = " + object2.language+"</h3>");  
         document.write("<h3>Author = " + object2.author+"</h3>");   
  
         document.write("<hr />");
         document.write(object2.language + " programming language can be studied " + "from book written by " + object2.author);
         document.write("<hr />");
      </script>
   </head>
   
   <body>
   </body>
</html>

Теперь давайте попробуем открыть json.htm с помощью IE или любого другого браузера с поддержкой javascript, который выдает следующий результат:

Вы можете обратиться к главе «Объекты JSON» для получения дополнительной информации об объектах JSON.

JSON — Синтаксис

Давайте кратко рассмотрим основной синтаксис JSON. Синтаксис JSON в основном рассматривается как подмножество синтаксиса JavaScript; это включает в себя следующее —

  • Данные представлены в парах имя / значение.

  • В фигурных скобках хранятся объекты, и за каждым именем следует ‘:’ (двоеточие), пары имя / значение разделяются (запятая).

  • Квадратные скобки содержат массивы, а значения разделяются, (запятая).

Ниже приведен простой пример —

{
   "book": 
}

JSON поддерживает следующие две структуры данных —

  • Коллекция пар имя / значение — эта структура данных поддерживается различными языками программирования.

  • Упорядоченный список значений — включает массив, список, вектор или последовательность и т. Д.

JSON — DataTypes

Формат JSON поддерживает следующие типы данных —

Sr.No. Тип и описание
1

номер

формат с плавающей точкой двойной точности в JavaScript

2

строка

Unicode с двойными кавычками с обратной косой чертой

3

логический

правда или ложь

4

массив

упорядоченная последовательность значений

5

Значение

это может быть строка, число, истина или ложь, null т. д.

6

объект

неупорядоченный набор пар ключ: значение

7

Пробелы

может использоваться между любой парой токенов

8

null

опорожнить

Основы

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.

Если skipkeys = True, то ключи словаря не базового типа (str, unicode, int, long, float, bool, None) будут проигнорированы, вместо того, чтобы вызывать исключение TypeError.

Если ensure_ascii = True, все не-ASCII символы в выводе будут экранированы последовательностями \uXXXX, и результатом будет строка, содержащая только ASCII символы. Если ensure_ascii = False, строки запишутся как есть.

Если check_circular = False, то проверка циклических ссылок будет пропущена, а такие ссылки будут вызывать OverflowError.

Если allow_nan = False, при попытке сериализовать значение с запятой, выходящее за допустимые пределы, будет вызываться ValueError (nan, inf, -inf) в строгом соответствии со спецификацией JSON, вместо того, чтобы использовать эквиваленты из JavaScript (NaN, Infinity, -Infinity).

Если indent является неотрицательным числом, то массивы и объекты в JSON будут выводиться с этим уровнем отступа. Если уровень отступа 0, отрицательный или «», то вместо этого будут просто использоваться новые строки. Значение по умолчанию None отражает наиболее компактное представление. Если indent — строка, то она и будет использоваться в качестве отступа.

Если sort_keys = True, то ключи выводимого словаря будут отсортированы.

json.dumps(obj, 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-формата.

Аргументы имеют то же значение, что и для dump().

Ключи в парах ключ/значение в JSON всегда являются строками. Когда словарь конвертируется в JSON, все ключи словаря преобразовываются в строки. В результате этого, если словарь сначала преобразовать в JSON, а потом обратно в словарь, то можно не получить словарь, идентичный исходному. Другими словами, loads(dumps(x)) != x, если x имеет нестроковые ключи.

json.load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) — десериализует JSON из fp.

object_hook — опциональная функция, которая применяется к результату декодирования объекта (dict). Использоваться будет значение, возвращаемое этой функцией, а не полученный словарь.

object_pairs_hook — опциональная функция, которая применяется к результату декодирования объекта с определённой последовательностью пар ключ/значение. Будет использован результат, возвращаемый функцией, вместо исходного словаря. Если задан так же object_hook, то приоритет отдаётся object_pairs_hook.

parse_float, если определён, будет вызван для каждого значения JSON с плавающей точкой. По умолчанию, это эквивалентно float(num_str).

parse_int, если определён, будет вызван для строки JSON с числовым значением. По умолчанию эквивалентно int(num_str).

parse_constant, если определён, будет вызван для следующих строк: «-Infinity», «Infinity», «NaN». Может быть использовано для возбуждения исключений при обнаружении ошибочных чисел JSON.

Если не удастся десериализовать JSON, будет возбуждено исключение ValueError.

json.loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) — десериализует s (экземпляр str, содержащий документ JSON) в объект Python.

Чтение и парсинг json формата, запись данных в файл в Python.

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

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

  • Последовательность пар с ключами и соответствующими им значениями, подобно словарям;
  • Просто упорядоченный набор значений, подобно спискам.

Модуль предоставляет API, подобный стандартным библиотечным модулям .

Примечания:

  • JSON — это подмножество YAML 1.2. Объект JSON, создаваемый с значением разделителей по умолчанию, также является подмножеством YAML 1.0 и 1.1. Таким образом, этот модуль также можно использовать в качестве сериализатора YAML.
  • Сериализатор и десериализатор этого модуля по умолчанию сохраняют порядок ввода и вывода элементов. Порядок теряется только в том случае, если вложенные контейнеры неупорядочены.

Пример сериализации JSON Python

Представьте, что вы работаете с объектом Python в памяти, который выглядит следующим образом:

data_file.json

Python

data = {
«president»: {
«name»: «Zaphod Beeblebrox»,
«species»: «Betelgeusian»
}
}

1
2
3
4
5
6

data={

«president»{

«name»»Zaphod Beeblebrox»,

«species»»Betelgeusian»

}

}

Сохранить эту информацию на диск — критично, так что ваша задача — записать на файл.

Используя контекстный менеджер Python, вы можете создать файл под названием data_file.json и открыть его в режиме write (файлы JSON имеют расширение .json).

Python

with open(«data_file.json», «w») as write_file:
json.dump(data, write_file)

1
2

withopen(«data_file.json»,»w»)aswrite_file

json.dump(data,write_file)

Обратите внимание на то, что dump() принимает два позиционных аргумента: (1) объект данных, который сериализуется и (2), файловый объект, в который будут вписаны байты. Или, если вы склонны продолжать использовать эти сериалзированные данные JSON в вашей программе, вы можете работать как со строкой

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

Python

json_string = json.dumps(data)

1 json_string=json.dumps(data)

Обратите внимание, что файловый объект является пустым, так как вы на самом деле не выполняете запись на диск. Кроме того, dumps() аналогичен dump()

Ура! У вас получился малыш JSON и вы можете выпустить его в реальный мир, чтобы он вырос большим и сильным.

Несколько полезных аргументов

Помните, что JSON создан таким образом, чтобы быть читаемым для людей. Но читаемого синтаксиса недостаточно, если все слеплено вместе. Кроме этого, ваш стиль программирования скорее всего отличается от моего, и вам будет проще читать код, если он отформатирован по вашему вкусу.

Первая опция, которую большинство людей хотят поменять, это пробел. Вы можете использовать аргумент indent для определения размера отступа вложенных структур. Ощутите разницу лично, используя данные, упомянутые выше и выполните следующие команды в консоли:

Python

json.dumps(data)
json.dumps(data, indent=4)

1
2

json.dumps(data)

json.dumps(data,indent=4)

Еще один вариант форматирования — это аргумент separators. По умолчанию, это двойной кортеж строк разделителя («, «, «: «), но обычно в качестве альтернативы для компактного JSON является («,», «:»). Взгляните на пример JSON еще раз, чтобы понять, где в игру вступают разделители.

Есть и другие аргументы, такие как sort_keys, но я не имею понятия, что он делает. Вы можете найти полный список в , если вам интересно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector