JSON ir akronīms, kas apzīmē JavaScript Object Notation. Neskatoties uz nosaukumu, JSON ir valodas agnostisks formāts, ko visbiežāk izmanto datu pārsūtīšanai starp sistēmām un dažkārt arī datu glabāšanai. Programmas, kas rakstītas programmā Python, kā arī daudzas citas programmēšanas valodas, var pārņemt JSON formatētus datus un serializēt datus atmiņā JSON formātā. Python atbalsta JSON, izmantojot iebūvēto pakotni, ko sauc par json. Lai izmantotu šo līdzekli, importējiet json pakotni Python skriptā vai modulī, kurā vēlaties serializēt vai deserializēt savus datus. JSON izmanto ar komatu atdalītus atslēgu vērtību pārus, kas ietverti pēdiņās un atdalīti ar koliem. JSON faila pamattekstu var norobežot cirtaini iekavās { } vai kvadrātiekavās [] (dažās lokalizācijās sauktas arī par iekavām). Šķiet, ka JSON formāts ir līdzīgs Python vārdnīcai, taču JSON formāta specifikai ir būtiskas atšķirības, tāpēc esiet piesardzīgs, strādājot ar abiem formātiem.
Piezīme: Lai iegūtu papildinformāciju, skatiet sadaļu Lasīt, Rakstiet un parsējiet JSON, izmantojot Python
Json.dumps()
Funkcija json.dumps() pārveidos Python objektu apakškopu JSON virknē. Ne visi objekti ir konvertējami, un, iespējams, būs jāizveido datu vārdnīca, ko vēlaties atklāt pirms serializēšanas JSON.
Sintakse:
json.dumps(obj, *, skipkeys=False, biztos_ascii=True, check_circular=True, allow_nan=True, cls=Nav, indent=Nav, separators=nav, default=nav, sort_keys=false,**kw)
Parametri:
obj: Serializējiet obj kā JSON formatētu straumi
izlaišanas taustiņi: Ja skipkeys ir True (noklusējuma: False), tad diktēšanas taustiņi, kas nav pamata tipa (str, int, float, bool, None), tiks izlaisti, nevis paaugstināt TypeError.
biztosít_ascii: Ja secure_ascii vērtība ir True (noklusējums), tiek garantēts, ka izvadei tiks izmantotas visas ienākošās rakstzīmes, kas nav ASCII. Ja nodrošināt_ascii ir False, šīs rakstzīmes tiks izvadītas tādas, kādas tās ir.
check_circular: Ja check_circular vērtība ir False (noklusējuma: True), tad konteinera tipu apļveida atsauces pārbaude tiks izlaista un apļveida atsauce radīs OverflowError (vai sliktāk).
allow_in: Ja allow_nan vērtība ir False (noklusējums: True), tā būs ValueError, lai serializētu ārpus diapazona peldošās vērtības (nan, inf, -inf), stingri ievērojot JSON specifikāciju. Ja allow_nan vērtība ir True, tiks izmantoti to JavaScript ekvivalenti (NaN, Infinity, -Infinity).
ievilkums: Ja atkāpe ir nenegatīvs vesels skaitlis vai virkne, tad JSON masīva elementi un objektu dalībnieki tiks izdrukāti ar šo atkāpes līmeni. Atkāpes līmenis ir 0, negatīvs vai tiks ievietotas tikai jaunas rindiņas. Neviens (noklusējums) atlasa kompaktāko attēlojumu. Izmantojot pozitīva vesela skaitļa atkāpi, vienā līmenī tiek ievadīts tik daudz atstarpju. Ja atkāpe ir virkne (piemēram, ), šī virkne tiek izmantota katra līmeņa atkāpei.
atdalītāji: Ja norādīts, atdalītājiem ir jābūt (item_separator, key_separator) kortei. Noklusējums ir (', ', ': '), ja atkāpe ir None, un (', ', ':') pretējā gadījumā. Lai iegūtu kompaktāko JSON attēlojumu, jānorāda (', ', ':'), lai izslēgtu atstarpes.
noklusējuma: Ja tas ir norādīts, noklusējuma funkcijai ir jābūt funkcijai, kas tiek izsaukta objektiem, kurus citādi nevar serializēt. Tam vajadzētu atgriezt JSON kodējamu objekta versiju vai izraisīt TypeError. Ja tas nav norādīts, tiek parādīts TypeError.
sort_keys: Ja sort_keys ir True (noklusējums: False), tad vārdnīcu izvade tiks sakārtota pēc atslēgas.
1. piemērs: Nododot Python vārdnīcu funkcijai json.dumps(), tiks atgriezta virkne.
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))> |
>
>
Izvade
Līdzvērtīga vārdnīcas json virkne: {1: Welcome, 2: to, 3: Geeks, 4: for, 5: Geeks}
2. piemērs: Iestatot izlaišanas taustiņus uz True (noklusējums: False), mēs automātiski izlaižam taustiņus, kas nav pamata 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)> |
>
>
Izvade
Līdzvērtīga vārdnīcas json virkne: {2: to, 3: Geeks, 4: for, 5: Geeks}
3. piemērs:
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)> |
>
>
Izvade:
Līdzvērtīga vārdnīcas json virkne: {2: līdz, 3: Geeks, 4: for, 5: Geeks, 6: NaN}
4. piemērs:
Python3
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)> |
>
virkne salīdzinājumā ar
>
Izvade:
Equivalent json string of dictionary: { '2': 'to', '3': 'Geeks', '4': 'for', '5': 'Geeks', '6': NaN }>
5. piemērs:
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)> |
>
>
Izvade:
Equivalent json string of dictionary: { '2' = 'to'. '3' = 'Geeks'. '4' = 'for'. '5' = 'Geeks'. '6' = NaN }>
6. piemērs:
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)> |
>
>
Izvade:
Equivalent json string of dictionary: { 'a' = 'Geeks'. 'b' = 'to'. 'c' = 'Welcome' }>