Moduł json

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

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

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          |
+-------------------+---------------+