JSON je zkratka pro JavaScript Object Notation. Navzdory svému názvu je JSON jazyk agnostický formát, který se nejčastěji používá k přenosu dat mezi systémy a příležitostně k ukládání dat. Programy napsané v Pythonu, stejně jako mnoho dalších programovacích jazyků, mohou přijímat data ve formátu JSON a mohou serializovat data v paměti do formátu JSON. Krajta podporuje JSON prostřednictvím vestavěného balíčku s názvem json. Chcete-li použít tuto funkci, importujte balíček json do skriptu nebo modulu Pythonu, ve kterém chcete serializovat nebo deserializovat svá data. JSON využívá páry klíč-hodnota oddělené čárkou, které jsou ve dvojitých uvozovkách a oddělené dvojtečkami. Tělo souboru JSON lze oddělit ve složených závorkách { } nebo hranatých závorkách [] (v některých jazycích také známé jako závorky). Formát JSON se zdá být podobný slovníku v Pythonu, ale specifika formátu JSON mají značné rozdíly, proto buďte opatrní při práci s oběma formáty.
Poznámka: Další informace naleznete v části Číst, Napište a analyzujte JSON pomocí Pythonu
Json.dumps()
Funkce json.dumps() převede podmnožinu objektů Pythonu na řetězec json. Ne všechny objekty jsou převoditelné a možná budete muset vytvořit slovník dat, která chcete vystavit před serializací do JSON.
Syntax:
json.dumps(obj, *, skipkeys=False, secure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Parametry:
obj: Serializujte obj jako stream ve formátu JSON
přeskakovací klávesy: Je-li skipkeys True (výchozí: False), pak budou klávesy dict, které nejsou základního typu (str, int, float, bool, None), přeskočeny namísto vyvolání TypeError.
secure_ascii: Pokud má secure_ascii hodnotu True (výchozí), je zaručeno, že všechny příchozí znaky mimo ASCII budou uvozeny. Pokud má secure_ascii hodnotu False, budou tyto znaky zobrazeny tak, jak jsou.
kontrolní_kruh: Pokud má check_circular hodnotu False (výchozí: True), pak bude kontrola kruhové reference pro typy kontejnerů přeskočena a kruhová reference bude mít za následek chybu OverflowError (nebo horší).
allow_in: Pokud má allow_nan hodnotu False (výchozí: True), bude se jednat o hodnotu ValueError pro serializaci plovoucích hodnot mimo rozsah (nan, inf, -inf) v přísném souladu se specifikací JSON. Pokud má allow_nan hodnotu True, použijí se jejich ekvivalenty v JavaScriptu (NaN, Infinity, -Infinity).
Odrážka: Pokud je odsazení nezáporné celé číslo nebo řetězec, prvky pole JSON a členové objektu budou pěkně vytištěny s touto úrovní odsazení. Úroveň odsazení 0, záporná nebo vloží pouze nové řádky. Žádné (výchozí) vybere nejkompaktnější reprezentaci. Použití kladného celého čísla odsazení odsadí tolik mezer na úroveň. Pokud je odsazení řetězec (například ), tento řetězec se použije k odsazení každé úrovně.
oddělovače: Je-li zadáno, oddělovače by měly být (item_separator, key_separator) n-tice. Výchozí hodnota je (‘, ‘, ‘: ‘), pokud je odsazení Žádné, a (‘, ‘, ‘: ‘) jinak. Chcete-li získat co nejkompaktnější reprezentaci JSON, měli byste zadat (‘, ‘, ‘:’), abyste odstranili mezery.
výchozí: Pokud je zadáno, výchozí by měla být funkce, která se volá pro objekty, které jinak nelze serializovat. Měl by vrátit kódovatelnou verzi objektu JSON nebo vyvolat chybu TypeError. Pokud není zadán, je vyvolána chyba TypeError.
sort_keys: Pokud má sort_keys hodnotu True (výchozí: False), bude výstup slovníků seřazen podle klíče.
Příklad č. 1: Předání pythonského slovníku funkci json.dumps() vrátí řetězec.
Python3
import> json> # Creating a dictionary> Dictionary> => {> 1> :> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> }> > # Converts input dictionary into> # string and stores it in json_string> json_string> => json.dumps(Dictionary)> print> (> 'Equivalent json string of input dictionary:'> ,> > json_string)> print> (> )> # Checking type of object> # returned by json.dumps> print> (> type> (json_string))> |
>
>
nekonečná smyčka
Výstup
Ekvivalentní řetězec json slovníku: {1: Welcome, 2: to, 3: Geeks, 4: for, 5: Geeks}
Příklad č. 2: Nastavením skipkeys na True (výchozí: False) automaticky přeskakujeme klávesy, které nejsou základního typu.
Python3
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> }> # Our dictionary contains tuple> # as key, so it is automatically> # skipped If we have not set> # skipkeys = True then the code> # throws the error> json_string> => json.dumps(Dictionary,> > skipkeys> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
jarní mvc
>
Výstup
Ekvivalentní řetězec json slovníku: {2: to, 3: Geeks, 4: for, 5: Geeks}
Příklad č. 3:
Python3
import> json> # We are adding nan values> # (out of range float values)> # in dictionary> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # If we hadn't set allow_nan to> # true we would have got> # ValueError: Out of range float> # values are not JSON compliant> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Výstup :
Ekvivalentní řetězec json slovníku: {2: to, 3: Geeks, 4: for, 5: Geeks, 6: NaN}
Příklad č. 4:
Python3
c program pro dvourozměrné pole
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # Indentation can be used> # for pretty-printing> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> ,> > indent> => 6> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
android proces acore
>
>
Výstup:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }>
Příklad č. 5:
Python3
import> json> Dictionary> => {(> 1> ,> 2> ,> 3> ):> 'Welcome'> ,> 2> :> 'to'> ,> > 3> :> 'Geeks'> ,> 4> :> 'for'> ,> > 5> :> 'Geeks'> ,> 6> :> float> (> 'nan'> )}> # If specified, separators should be> # an (item_separator, key_separator)tuple> # Items are separated by '.' and key,> # values are separated by '='> json_string> => json.dumps(Dictionary,> > skipkeys> => True> ,> > allow_nan> => True> ,> > indent> => 6> ,> > separators> => (> '. '> ,> ' = '> ))> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Výstup:
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }>
Příklad č. 6:
Python3
java mapy
import> json> Dictionary> => {> 'c'> :> 'Welcome'> ,> 'b'> :> 'to'> ,> > 'a'> :> 'Geeks'> }> json_string> => json.dumps(Dictionary,> > indent> => 6> ,> > separators> => (> '. '> ,> ' = '> ),> > sort_keys> => True> )> print> (> 'Equivalent json string of dictionary:'> ,> > json_string)> |
>
>
Výstup:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>