JSON on lyhenne, joka tulee sanoista JavaScript Object Notation. Nimestään huolimatta JSON on kielen agnostinen muoto, jota käytetään yleisimmin tiedon siirtämiseen järjestelmien välillä ja toisinaan tietojen tallentamiseen. Pythonilla ja monilla muilla ohjelmointikielillä kirjoitetut ohjelmat voivat syöttää JSON-muotoista tietoa ja sarjoittaa muistissa olevia tietoja JSON-muotoon. Python tukee JSON:ta sisäänrakennetun paketin kautta nimeltä json. Voit käyttää tätä ominaisuutta tuomalla json-paketin Python-skriptiin tai moduuliin, jossa haluat sarjoittaa tai deserialisoida tietosi. JSON käyttää pilkuilla eroteltuja avainarvopareja, jotka sisältyvät lainausmerkkeihin ja erotetaan kaksoispisteillä. JSON-tiedoston runko voidaan rajata aaltosulkeisiin { } tai hakasulkeisiin [] (tunnetaan myös hakasulkeina joillakin kielialueilla). JSON-muoto näyttää olevan samanlainen kuin Pythonin sanakirja, mutta JSON-muodon ominaisuuksissa on merkittäviä eroja, joten ole varovainen työskennellessäsi molempien muotojen kanssa.
Huomautus: Lisätietoja on kohdassa Lue, Kirjoita ja jäsennä JSON Pythonilla
Json.dumps()
json.dumps()-funktio muuntaa Python-objektien osajoukon json-merkkijonoksi. Kaikki objektit eivät ole muunnettavissa, ja saatat joutua luomaan sanakirjan tiedoista, jotka haluat paljastaa ennen sarjoittamista JSONiin.
Syntaksi:
json.dumps(obj, *, skipkeys=Epätosi, varmistaa_ascii=Tosi, check_circular=Tosi, allow_nan=Tosi, cls=Ei mitään, indent=Ei mitään, separators=Ei mitään, oletus=Ei mitään, sort_keys=False, **kw)
Parametrit:
obj: Sarjaa obj JSON-muotoiltuna streamina
ohitusnäppäimet: Jos skipkeys on True (oletus: False), dict-näppäimet, jotka eivät ole perustyyppiä (str, int, float, bool, None), ohitetaan TypeError-arvon nostamisen sijaan.
varmistaa_ascii: Jos varmistaa_ascii on True (oletus), tulosteessa taataan kaikki saapuvat ei-ASCII-merkit. Jos varmistaa_ascii on False, nämä merkit tulostetaan sellaisenaan.
check_circular: Jos check_circular on False (oletus: True), konttityyppien ympyräviittauksen tarkistus ohitetaan ja ympyräviittaus johtaa ylivuotovirheeseen (tai huonompaan).
salli_sisään: Jos allow_nan on False (oletus: True), se on ValueError sarjoittaessaan alueen ulkopuoliset kelluvat arvot (nan, inf, -inf) tarkasti JSON-määrityksen mukaisesti. Jos allow_nan on True, käytetään niiden JavaScript-vastineita (NaN, Infinity, -Infinity).
sisennys: Jos sisennys on ei-negatiivinen kokonaisluku tai merkkijono, JSON-taulukon elementit ja objektin jäsenet tulostetaan kauniisti tällä sisennystasolla. Sisennystaso 0, negatiivinen tai lisää vain rivinvaihdot. Ei mikään (oletus) valitsee kompaktimman esityksen. Positiivisen kokonaisluvun sisennyksen käyttäminen sisentää näin monta välilyöntiä tasoa kohden. Jos sisennys on merkkijono (kuten ), sitä käytetään kunkin tason sisennykseen.
erottimet: Jos se on määritetty, erottimien tulee olla (item_separator, key_separator) monikko. Oletusarvo on (', ', ': '), jos sisennys on Ei mitään ja (', ', ': ') muussa tapauksessa. Saadaksesi kompaktimman JSON-esityksen, sinun tulee määrittää (', ', ':') poistaaksesi välilyönnit.
oletus: Jos määritetään, oletuksena pitäisi olla funktio, jota kutsutaan objekteille, joita ei muuten voida sarjottaa. Sen pitäisi palauttaa JSON-koodattu versio objektista tai herättää TypeError. Jos sitä ei ole määritetty, TypeError nostetaan esiin.
sort_keys: Jos lajitteluavaimet on True (oletus: False), sanakirjojen tulos lajitellaan avaimen mukaan.
Esimerkki 1: Python-sanakirjan välittäminen funktioon json.dumps() palauttaa merkkijonon.
Python 3
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))> |
>
>
Lähtö
Sanakirjan vastaava json-merkkijono: {1: Tervetuloa, 2: to, 3: Geeks, 4: for, 5: Geeks}
Esimerkki 2: Asettamalla ohitusnäppäimet arvoon True (oletus: False), ohitamme automaattisesti näppäimet, jotka eivät ole perustyyppiä.
leksikografisesti
Python 3
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)> |
>
>
Lähtö
Sanakirjan vastaava json-merkkijono: {2: to, 3: Geeks, 4: for, 5: Geeks}
Esimerkki #3:
Python 3
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)> |
>
>
Lähtö:
Sanakirjan vastaava json-merkkijono: {2: to, 3: Geeks, 4: for, 5: Geeks, 6: NaN}
Esimerkki #4:
Python 3
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)> |
>
>
Lähtö:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }>
Esimerkki #5:
Python 3
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)> |
>
>
Lähtö:
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }>
Esimerkki #6:
Python 3
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)> |
>
>
Lähtö:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>