JSON je akronim, ki pomeni JavaScript Object Notation. Kljub svojemu imenu je JSON agnostična oblika zapisa jezika, ki se najpogosteje uporablja za prenos podatkov med sistemi in občasno za shranjevanje podatkov. Programi, napisani v Pythonu in številnih drugih programskih jezikih, lahko zaužijejo podatke v formatu JSON in serializirajo podatke v pomnilniku v format JSON. Python podpira JSON prek vgrajenega paketa, imenovanega json. Če želite uporabiti to funkcijo, uvozite paket json v skript ali modul Python, v katerem želite serializirati ali deserializirati svoje podatke. JSON uporablja z vejicami ločene pare vrednosti ključev, ki so v dvojnih narekovajih in ločeni z dvopičji. Telo datoteke JSON je mogoče razmejiti z zavitimi oklepaji { } ali oglatimi oklepaji [] (v nekaterih jezikih znani tudi kot oklepaji). Zdi se, da je format JSON podoben slovarju v Pythonu, vendar ima specifika zapisa JSON pomembne razlike, zato bodite previdni pri delu z obema formatoma.
Opomba: Za več informacij glejte Preberite, Pišite in razčlenite JSON z uporabo Pythona
Json.dumps()
Funkcija json.dumps() bo pretvorila podnabor predmetov Python v niz json. Ni vseh objektov mogoče pretvoriti in morda boste morali ustvariti slovar podatkov, ki jih želite izpostaviti, preden jih serializirate v JSON.
Sintaksa:
json.dumps(obj, *, skipkeys=False, secure_ascii=True, check_circular=True, allow_nan=True, cls=Brez, indent=Brez, ločila=Brez, default=Brez, sort_keys=False, **kw)
Parametri:
predmet: Serializirajte obj kot tok v formatu JSON
preskočne tipke: Če je skipkeys nastavljen na True (privzeto: False), bodo tipke dict, ki niso osnovnega tipa (str, int, float, bool, None), preskočene, namesto da bi sprožile TypeError.
zagotovi_ascii: Če je secure_ascii nastavljen na True (privzeto), je zagotovljeno, da bodo vsi vhodni znaki, ki niso ASCII, ubežali. Če je secure_ascii nastavljen na False, bodo ti znaki izpisani takšni, kot so.
check_circular: Če je check_circular nastavljen na False (privzeto: True), bo krožno preverjanje sklicevanja za vrste vsebnikov preskočeno in krožno sklicevanje bo povzročilo OverflowError (ali še hujše).
dovoli_in: Če je allow_nan nastavljen na False (privzeto: True), bo ValueError serializiranje plavajočih vrednosti izven območja (nan, inf, -inf) v strogi skladnosti s specifikacijo JSON. Če je allow_nan nastavljen na True, bodo uporabljeni njihovi ekvivalenti JavaScript (NaN, Infinity, -Infinity).
zamik: Če je zamik nenegativno celo število ali niz, bodo elementi polja JSON in člani objekta lepo natisnjeni s to stopnjo zamika. Raven zamika 0, negativna ali bo vstavila samo nove vrstice. Brez (privzeto) izbere najbolj kompaktno predstavitev. Uporaba zamika pozitivnega celega števila zamakne toliko presledkov na raven. Če je zamik niz (kot je ), se ta niz uporablja za zamik vsake ravni.
ločila: Če je določeno, morajo biti ločila (ločilo_predmetov, ločilo_ključev) torka. Privzeta vrednost je (', ', ': '), če je zamik Brez in (', ', ': ') drugače. Če želite dobiti najbolj kompaktno predstavitev JSON, morate podati (', ', ':'), da odstranite presledke.
privzeto: Če je podana, mora biti privzeta funkcija, ki se kliče za objekte, ki jih drugače ni mogoče serializirati. Vrniti mora različico predmeta, ki jo je mogoče kodirati JSON, ali sprožiti TypeError. Če ni določeno, se sproži TypeError.
sort_keys: Če je sort_keys True (privzeto: False), bo izpis slovarjev razvrščen po ključu.
Primer #1: Posredovanje slovarja Python funkciji json.dumps() bo vrnilo niz.
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))> |
>
>
Izhod
Enakovreden niz json iz slovarja: {1: Dobrodošli, 2: za, 3: Geeks, 4: za, 5: Geeks}
Primer #2: Z nastavitvijo skipkeys na True (privzeto: False) samodejno preskočimo tipke, ki niso osnovnega tipa.
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)> |
>
>
Izhod
Enakovreden niz json iz slovarja: {2: do, 3: Geeks, 4: za, 5: Geeks}
Primer #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)> |
>
>
Izhod:
Enakovreden niz json iz slovarja: {2: do, 3: Geeks, 4: za, 5: Geeks, 6: NaN}
Primer #4:
Python3
java niz v celo število
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)> |
>
>
Izhod:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }>
Primer #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)> |
>
>
Izhod:
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }>
Primer #6:
Python3
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)> |
>
>
Izhod:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>