Moduł json

https://en.wikipedia.org/wiki/JSON

https://docs.python.org/3/library/json.html

https://json-schema.org/
JSON Schema enables the confident and reliable use of the JSON data format.

WPROWADZENIE

JSON (JavaScript Object Notation) to lekki format wymiany danych komputerowych, bazujący na podzbiorze języka JavaScript. Typ MIME dla formatu JSON to application/json. Format został opisany w dokumencie RFC 4627 i nowszym RFC 7159. Moduł json pojawił się w Pythonie 2.6. Format JSON może być użyty do serializacji (encoding) i rekonstukcji (decoding) danych.

Format JSON, w przeciwieństwie do pickle i marshal, nie pozwala na serializację więcej niż jednego obiektu do pliku, bo wtedy plik JSON będzie niepoprawny.

Format JSON jest niezależny od języka programowania.

Plik JSON nie pozwala na zapisywanie w nim komentarzy.


import json     # Py2.6+, Py3

# Serializacja obiektu obj do pliku tekstowego outfile (opened for writing).
# obj to najczęściej zagnieżdżona lista lub słownik.
# separators=(item_separator, key_separator)
# separators=(', ',': ') domyślnie
# separators=(',', ':') zwarty zapis
# encoding : the character encoding for str instances, default is UTF-8
# sort_keys : bool, default is False;
#     if True then the output of dictionaries will be sorted by key

with open(file_name, mode='w') as outfile:
    json.dump(obj, outfile)
    #json.dump(obj, outfile, sort_keys=True, indent=4, separators=(',', ': '))

# Serializacja podstawowych obiektów Pythona (zapis do stringu).
# Tak możemy sprawdzić stringową reprezentację obiektu w formacie JSON.

word = json.dumps(obj)
word = json.dumps('żółw')   # "\u017c\u00f3\u0142w", użyto utf-8

# Compact encoding. Nie wstawia spacji.
# Opcja separators=(item_separator, key_separator).
# Domyślne ustawienie to separators=(', ',': ').
word = json.dumps(obj, separators=(',',':'))

# Pretty printing.
word = json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': '))

# Deserializacja danych z infile (opened for reading) do obiektu Pythona.
with open(file_name) as infile:
    obj = json.load(infile)

# Decoding from JSON string.
obj = json.loads(word)

Decoder
+---------------+------------------------+
| JSON          | Python                 |
+===============+========================+
| object        | dict                   |
+---------------+------------------------+
| array         | list                   |
+---------------+------------------------+
| string        | unicode[Py2], str[Py3] |
+---------------+------------------------+
| number (int)  | int, long              |
+---------------+------------------------+
| number (real) | float                  |
+---------------+------------------------+
| true          | True                   |
+---------------+------------------------+
| false         | False                  |
+---------------+------------------------+
| null          | None                   |
+---------------+------------------------+

Encoder
+-------------------+---------------+
| Python            | JSON          |
+===================+===============+
| dict              | object        |
+-------------------+---------------+
| list, tuple       | array         |
+-------------------+---------------+
| str, unicode      | string        |
+-------------------+---------------+
| int, long, float  | number        |
+-------------------+---------------+
| True              | true          |
+-------------------+---------------+
| False             | false         |
+-------------------+---------------+
| None              | null          |
+-------------------+---------------+