Gwara reMurongi wePython Data neJSON

Kugadziridza kwekupedzisira: 12/29/2025
  • JSON inobatanidza zvakananga nemhando dzePython, nezvinhu uye ma arrays zvichimiririrwa sema dicts uye runyorwa, zvichiita kuti kuchinjana kwedata kuve nyore.
  • Python's json module inopa mabasa e dump/load anochinjika ane sarudzo dzekudhinda kwakanaka, ma encoders akagadzirwa, uye stable key ordering.
  • Kuverenga, kunyora, uye kutsanangura maJSON akaunganidzwa kubva kumafaira nemaAPI zvinoshandisa maturusi akafanana, pamwe chete nekubata zvikanganiso nokungwarira.
  • Kunze kwekunge zviri nyore kugadzira serialization, JSON muPython inotsigira mafomati, kusimbiswa, uye kubatanidzwa nemamwe mafomati edata akadai seCSV neXML.

Dzidziso yedata rePython JSON

JSON yave mutauro wepakutanga wedata pawebhu, chinyararire. uye kana uri kunyora Python, unongosangana nayo kwese kwese: maAPI, mafaira ekugadzirisa, "databases" diki dzemapurojekiti epadivi, magwaro, uye kunyange zvigadziriso zvebvunzo. Kunzwisisa kuti mhando dzedata dzePython dzinoenda sei kuJSON uye kuti json Module inoshanda zvechokwadi ndeimwe yehunyanzvi hunoita kuti mabasa mazhinji ezuva nezuva ave nyore.

Gwaro iri rinotarisa JSON kubva pamaonero ePython programmer, kutsanangura kuti JSON chii, kuti ine hukama sei neJavaScript, kuti imhando dzipi dzePython dzainogona kumiririra, uye maitiro ekuongorora, kugadzira, kudhinda zvakanaka, kusimbisa, uye kugadzirisa JSON uchishandisa jsonTichatarisawo mashandisirwo chaiwo akaita sekushanda nemafaira nemaAPI, pamwe nemazano ekubata nested data uye edge cases dzakadai sezvikanganiso kana special values ​​senge NaN uye zvisingaperi.

Chii chinonzi JSON uye Kuti Chinoenderana Sei nePython Data

JSON, muchidimbu cheJavaScript Object Notation, ifomati yemashoko edata rakarongeka iyo yakatanga yatora mataurirwo ayo kubva kuzvinhu zveJavaScript ne arrays. Pasinei nemidzi yeJavaScript, JSON hainyatsozivikanwi nemutauro uye inotsigirwa nemitauro yese yemazuva ano, kusanganisira Python, zvichiita kuti ive yakakodzera kuchinjana data pakati pemasevhisi, vatengi, uye maseva.

Nepfungwa, JSON inoshandisa mabhuroko maviri chete ekuvaka akabatanidzwa: iyo JavaScript Chinhu uye JavaScript arrayChinhu chinoita seduramazwi rePython, uye array inoita sePython list. Neizvi zviviri, pamwe neboka diki remhando dzekare, JSON inogona kutsanangura maumbirwo edata akaomarara.

Chinhu chiri muJavaScript (neJSON) chinoita seizvi: {"key1": value1, "key2": value2}. Iunganidzwa wemakey-value pairs, uko makiyi ari strings uye ma values ​​anogona kuva chero JSON value inoshanda (kusanganisira zvimwe zvinhu kana arrays). Izvi zvinoenderana zvakanyanya nePython dict.

Rudzi rweJavaScript (neJSON) rwakafanana nePython list: . Iunganidzwa wezvinhu zvakarongwa, zvakare uchishandisa chero rudzi rweJSON rwunoshanda. Pamwe chete, zvinhu nema arrays zvinogona kubatanidzwa zvisina tsarukano kuti zvienzanise data rakapfuma senge ma profiles evashandisi, miti yekugadzirisa, kana mhinduro dzeAPI.

Mepu pakati pemhando dzeJSON nedzePython dziri nyore kwazvo, ndosaka dzimwe nguva uchinzwa vanhu vachiseka vachiti "PYON" (Python Object Notation). Kana Python ikagadzira kana kutsanangura JSON, zvinotevera zvinoshanda:

  • Chinhu cheJSON → Python dict
  • JSON array → Python list
  • Tambo yeJSON → Python str
  • Nhamba yeJSON (nhamba yakazara) → Python int
  • Nhamba yeJSON (chaiyo) → Python float
  • JSON true Python True
  • JSON false Python False
  • JSON null Python None

Chimwe chinhu chakakosha ndechekuti makiyi echinhu cheJSON anogara ari tambo, saka kana iwe ukaisa Python dict nemakiyi asiri etambo (semuenzaniso, manhamba ese kana matuple), makiyi iwayo achamanikidzwa kuita matambo kana kuwedzera zvikanganiso zvichienderana nemagadzirirwo ako. JSON yakanaka pakuchengetedza data rakarongwa semagadzirirwo kana marekodhi, asi iri kwete nzira yakajairika yekusvuta zvinhu zvePython zvisina tsarukano.

Mepu yedata rePython JSON

Python's Yakavakwa-mukati json Module

Python inotakura ne module yakajairwa yeraibhurari inonzi json, iyo inokupa zvese zvaunoda kuti ushande neJSON: kupatsanura tambo, kurodha kubva kumafaira, kuisa zvinhu zvePython muzvikamu, uye kugadzirisa mashandisirwo edata uye madhirowa. Haudi chero kutsamira kwekunze pamabasa eJSON akajairika.

Mashandiro mana makuru auchashandisa nguva zhinji ndeaya: json.dumps() uye json.dump() yekushandura zvinhu zvePython kuita JSON, uye json.loads() uye json.load() yekubva kuJSON kudzokera kuPython. Ma "s" shanduro anoshanda netambo, nepo ma "s" asina anoshanda nezvinhu zvakaita sefaira.

The json encoder inotsigira seti chaiyo yemhando dzePython nedefault, kureva dict, list, tuple (sema arrays), strnhamba (int, float, uye nhamba dzenhamba dzinobva kunhamba dzese (enums dzinobva kunhamba dzese dzinoti integer/float), uye ma singletons matatu akakosha. True, False, uye NoneIzvi zvinoshandurwa kuita maJSON equivalents avo zvichienderana nemepu yakatsanangurwa kare.

Kana uchida kugadzirisa zvinhu zvakagadzirwa kana mhando dzedata, dhizaini yemodule inogona kuwedzerwa: unogona kuderedza JSON encoder woita kuti default() nzira, kana kupasa tsika default shanda mukati json.dump() / json.dumps()Iyo custom hook inofanira kudzosa chimwe chinhu cheJSON chinogona kuverengerwa (senge dict or list), kana kukwidza TypeError kana ikasaziva mabatirwo echinhu chakapihwa.

Pasi pehood, module iyi inopawo nzira dzakadai se encode() uye iterencode(), iyo inoshandura data rePython kuita tambo dzeJSON, ne iterencode() zvichiburitsa zvidimbu zvakanyorerwa zvishoma nezvishoma. Izvi hazviwanzo shandiswa zvakananga asi zvakakosha kuziva nezvazvo kana uchida kurodha mhinduro dzeJSON dzakakura.

Kushandura Zvinhu zvePython Kuita JSON

Kana uchida kushandura data rePython kuita JSON text, unoshandisa json.dump() or json.dumps(), zvichienderana nekuti unoda kunyora zvakananga kufaira here kana kuti kuwana JSON string mundangariro. Mabasa ese ari maviri ane ma core parameter akafanana anokutendera kuti utonge maitiro ekushandura.

Basa racho json.dump(obj, fp, ...) inotora chinhu chePython uye chinhu chakafanana nefaira, uye anonyora mufananidzo weJSON we obj kune faira iroro. Rinoenderana nekurangarira, json.dumps(obj, ...), inodzosera tambo yeJSON pachinzvimbo chekunyorera kufaira. Vese vanobvuma nhevedzano yemashoko akakosha akadai se skipkeys, ensure_ascii, check_circular, allow_nan, indent, separators, default, uye sort_keys.

Imwe neimwe yesarudzo idzi inogadzirisa maitiro ekunyora nenzira dzinokosha zvikuru mumapurojekiti chaiwo: Unogona kusarudza kana uchida kusiya makiyi asina kunaka, kumanikidza ASCII kubuda, kudhinda mhedzisiro yacho zvakanaka, kudzora nzvimbo chena, kutsanangura custom serialization yezvinhu zvisiri zve standard, kana kugadzirisa key order yekuyedza uye diffs.

Hezvino zvinorehwa nemaparamita makuru mumashoko anoshanda:

  • skipkeys: kana yakagadzirirwa ku True, makiyi eduramazwi asiri emhando str, int, float, bool or None vanosvetukwa chinyararire pachinzvimbo chekusimudza TypeErrorKana uchida maitiro ekukundikana nekukurumidza kana makiyi asina kujairika, siya akadaro False.
  • ensure_ascii: apo True (zvakajairika), mavara asiri eASCII uye asingadhindwe anobuda (semuenzaniso se \uXXXX) saka zvinobuda zvinoramba zviri ASCII chaiyo. Kana False, Mavara eUnicode akanyorwa sezvaari, izvo zvinowanzova nani kune ma configs kana ma logs anoverengwa nevanhu.
  • check_circular: if True, iyo encoder inoongorora mareferensi akatenderera mumazita, madhikiti, uye zvinhu zvakagadzirwa nekodhi kudzivirira kudzokorora kusingaperi. Kuiisa pa False inodzima nzira iyoyo yekuchengetedza uye inogona kutungamira kune RecursionError kana zvivakwa zvako zvichizvitaurira wega.
  • allow_nan: if True, kukosha kwakakosha kwenzvimbo dzinoyangarara senge NaN, Infinity, uye -Infinity zvinotenderwa uye zvinonyorwa nenzira inoenderana neJavaScript, kunyangwe zvisiri JSON chaiyo zvichienderana nezvinodiwa. False, kuedza kunyora tsika dzakadaro kuchawedzera ValueError.
  • indent: nhamba isina nhamba (kana tambo) inodzora kudhindwa kwakanaka. Nhamba yakanaka inoreva nzvimbo dzakawanda padanho rakaiswa. Tambo (senge "\t") inoshandiswa zvakananga pakudzika mukati. None (iyo yakasarudzika) inosarudza chinomiririra chakanyanya kuomesesa, pasina mimwe mitsara mitsva inodarika zvinodiwa.
  • separators: tuple (item_separator, key_separator) kudzora zviratidzo zvekunyora uye nzvimbo chena pakati pezvinhu uye pakati pemakiyi nemakoshesi. Kune JSON yakasimba, unowanzo shandisa (",", ":") kubvisa nzvimbo dzese dzaungasarudza.
  • default: basa rinogamuchira chero chinhu chisingazivikanwe ne encoder. Rinofanira kudzorera JSON serializable replacement (senge dict or list), kana kukwidza TypeErrorIyi ndiyo nzira huru yekuita kuti makirasi ako akwanise kutevedzana.
  • sort_keys: if True, maduramazwi akanyorwa nemakiyi akarongwa. Izvi zvinobatsira zvikuru pakuongororwa kwe regression uye kubuda kwe reproducible, kwaunoda kuti JSON dumps igadzikane pakati pema run.

Semufananidzo wekongiri, fungidzira uine runyorwa rwakasanganiswa rwePython ine nhamba dzese uye duramazwi rine zita, id, uye floating-point score. Unogona kugadzira nekuchengetedza JSON seizvi:

import pathlib
import json

path = pathlib.Path("myTextFile.json")
data =

with path.open(mode="wt") as f:
    json.dump(data, f)

print(json.dumps(data, indent=4))

JSON yakadhindwa ichave yakarongwa zvakanaka nekuda kwe indent=4, kuratidza chinhu chega chega cherondedzero nekiyi yeduramazwi pamutsetse waro wega. Izvi zvinoita kuti kugadzirisa matambudziko nekugadzirisa nemaoko kuve nyore zvichienzaniswa nemutsetse mumwe chete, wakakora wezvinyorwa.

Kuongorora JSON Kudzokera kuPython

Kuti udzokere kubva pamashoko eJSON kuenda kuzvinhu zvePython, Unoshandisa mabasa maviri akafanana: json.load() (yezvinhu zvakaita sefaira) uye json.loads() (yeJSON strings). Mabasa aya anoongorora ma input uye anoumbazve Python types zvichienderana ne mepu table yakafanana neyakare.

Zviratidzo zvacho zvinotaridzika seizvi: json.load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, kw) uye json.loads(s, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, kw)Padanho rekutanga, unogona kuvadaidza neJSON input chete, asi nharo dzekuwedzera dzinovhura mukana wekuita ongororo yepamusoro.

Zvikokovonho zvakaita se object_hook uye object_pairs_hook rega iwe ugadzirise mashandisirwo anoitwa zvinhu zveJSON kuita Python structures, nekukupa chikafu chakagadziriswa dict kana runyorwa rwe (key, value) mapeya maviri zvichiteerana. Izvi zvinobatsira kana uchida kuvaka makirasi akagadzirirwa zvakananga kubva kuJSON kana kuchengetedza kuodha nenzira yakatarwa.

Zvimwe zvinodaidzwa zvakaita se parse_float, parse_int, uye parse_constant inokutendera kuti utonge mashandisirwo anoitwa nhamba nema tokeni akakosha. Semuenzaniso, ungangoda kushandisa Decimal panzvimbo ye float pamutengo wemari, kana kushandura "NaN", "inf", uye "-inf" muzvinhu zvevarindi zvaunosarudza.

Uchienderera mberi nemuenzaniso wekutanga, unogona kuverenga faira reJSON rawakanyora seizvi:

with path.open(mode="rt") as f:
    data = json.load(f)
print(data)

Chinobuda chichava rondedzero yePython neduramazwi, Semuyenzaniso , yaunogona kushandisa nemashandiro ese ePython. Kubva pamaonero ekodhi yako, i "data chete" zvakare.

Mhando dzipi Python Inogona Kushandura Kuita JSON

Hazvisi zvese zvinhu zvePython zvinogona kushandurwa kuita JSON pasina bhokisi, saka zvinobatsira kurangarira seti inobvumirwa. Ma encoders anoshanda anotsigira mudziyo wakajairika uye mhando dze scalar, pamwe neBooleans uye None, uye nyora mazita avo kune mamwe marudzi mashoma eJSON.

Nekuda kweizvozvo, unogona kupfuudza zvakachengeteka zvinhu zvinotevera zvePython kupinda json.dumps():

  • dict (yakanyorwa sezvinhu zveJSON)
  • list uye tuple (yakanyorwa seJSON arrays)
  • str (yakanyorwa seJSON strings)
  • int uye float (yakanyorwa senhamba dzeJSON)
  • True uye False (yakanyorwa se true uye false)
  • None (yakanyorwa se null)

Kana Python ikaisa izvi, kudzosa mepu kuJSON kwakajeka, uye zvinopesana pakusarudza makodhi. Semuenzaniso, Python tuple inova JSON array, uye unowana list kudzoka pakuremerwa. Enums dzakatorwa kubva int or float inogona zvakare kunyorwa senhamba.

Zvimwe zvese zvinoda kugadziriswa default mubati (kushandura zvinhu kuita mufananidzo unogona kuratidzwa) kana kuti zvichakonzera TypeErrorIzvi zvinoitwa nekugadzira: JSON yakagadzirirwa data, kwete magirafu echinhu chisina kurongeka ane maitiro uye nzira dzaungaite serialize uchishandisa pickle.

Pamabasa mazhinji ezuva nezuva, mhando idzi dzinofukidza ruzhinji rwemashandisirwo, kusanganisira maAPI payloads, configuration trees, user preferences, basic logs, uye madiki "akafanana nedatabase" mafaira eprototypes kana maturusi emunhu mumwe chete.

Kudhinda Kwakanaka, Kuburitsa Zvishoma, Uye Makiyi Akarongwa

Kubuda kweJSON kunowanzo shanda zvachose asi kwakaoma kuverenga, sezvo ichiwanzogadzirwa pasina nzvimbo tsvene isina basa. Pakugadzirisa matambudziko, kunyora, kana kugovera nevamwe vagadziri, unowanzoda JSON inoverengwa, inoiswa mukati panzvimbo peimwe chete.

The indent parameter ye json.dumps() ndiyo nzira huru yekudhinda zvakanaka, kukubvumira kuudza Python kuti nzvimbo ngani (kana kuti tambo ipi) yekushandisa padanho re indentation. Sarudzo yakajairika ndeye indent=4, kunyange hazvo mamwe macodebases achida nzvimbo mbiri kana mavara etabhu; maitiro ekunyora anosiyana pakati pemapurojekiti.

The separators nharo inokubatsira kugadzirisa nzvimbo tsvene zvakanyanya, kupa tuple yakaita se (", ", ": ") nekutanga kwezvinoburitswa zviri nyore kuvanhu. Kana uchida mufananidzo wakaderera zvakanyanya—semuenzaniso wekuderedza saizi yemutoro wepayload kuburikidza netiweki—unogona kuisa separators=(",", ":") kubvisa nzvimbo dziri shure kwemakoma nemakoroni.

Kana uine hanya nekubuda kwechokwadi, semuenzaniso mukuyedzwa kweyuniti kana kuenzanisa snapshot, activating sort_keys=True inoita kuti makiyi edhijitari e encoder output arongwe zvakanaka. Nenzira iyoyo, ma run maviri anogadzira data rakafanana neremantically haasiyane nekuti maduramazwi akaitika kumakiyi ekubuda mune imwe sequence yakasiyana.

Pamwe chete, indent, separators, uye sort_keys zvinokupa simba rakawanda rekutonga pamusoro pekuti JSON yako yakagadzirirwa michina (compact, isina whitespace) here kana kuti yevanhu (indented, yakarongedzwa, ine chimiro chakagadzikana pakati pema run).

Data Rakakamurwa, Mazano Ekuongorora, Uye Maitiro Ekuwana

MuJSON chaiyo, zvivakwa zvakati sandara hazviwanzoitiki; Kazhinji uchave uchibata nezvinhu zvakakomberedzwa uye ma arrays. Funga nezve rekodhi yemushandisi yakajairika mu e-commerce application: ruzivo rwemunhu, kero dzekutumira dzakakomberedzwa, ruzivo rwekubhadhara rwakakomberedzwa, uye pamwe runyorwa rwemaodha, chimwe nechimwe chiri chimiro chakaoma chayo.

Pakutsanangura JSON muPython, data rakaiswa muduramazwi rinova musanganiswa wemaduramazwi nerondedzero, uye unogona kuiwana uchishandisa standard index uye key lookups. Kune shallow structures, izvi zviri nyore: data, data, zvichingoenda zvakadaro.

Kune zvivakwa zvakadzika kana zvine simba, ungasarudza nzira yakajairika, zvakaita sekunyora basa diki recursive rinotsvaga makiyi kana kuti rinofamba nemuti wedicts nelists. Mhinduro dze recursive dzinowanzova pfupi uye dziri nyore kuverenga pane dzinodzokorora kana uchifamba nedata rakanyorwa zvisina tsarukano.

JSON isina kuvharwa (yakatsetseka) iri nyore kuwana zvakananga nemakiyi akaomeswa, izvo zvinogona kunge zvakanaka kwazvo kune zvishandiso zvidiki kana kana uchidzora zvizere zvinopinda. Zvisinei, paunenge uchishandisa maAPI ekunze, zvakajairika kunyora mabasa madiki ekubatsira anofukidza chimiro, kuti usasasase. maketani ese ari pacodebase yako.

Pasinei nekudzika, zvakafanana json.loads() maitiro anoshanda: basa racho rinogamuchira tambo yeJSON uye rinogadzira mhando dzePython dzaunoshandisa uchishandisa maturusi ePython akajairika. Hapana syntax yakakosha inodiwa kupfuura yakajairwa dict uye list kurongeka kwenhamba.

Kushanda neJSON Files: Kuverenga, Kunyora, Uye Kuisa Zvimwe

JSON inogadzira fomati yekuchengetera zvinhu yakareruka zvinoshamisa kune mapurojekiti madiki, mafaira ekugadzirisa, kana mascript anoda kuchengetedza mamiriro akasimba. Pane kutsvaga database yakazara, unogona kushandisa rimwe kana maviri eJSON kwenguva yakati rebei.

Kunyora JSON kufaira kunowanzoita nhanho mbiri: nyora data rePython ne json.dumps() kana zvakananga ne json.dump(), wobva waona kuti tambo yabuda yanyorwa kudiski. Kana ukafona open('data.json', 'w'), unowana mubato wefaira mu write mode unozogadzira faira racho kana kuridimbura kana richitovapo.

Kune zvivakwa zvakavakirwa, protocol haina kusiyana nedata rakatsetseka: uchiri kushandisa zvakafanana json.dump() call, uye musanganiswa wezvinyorwa nemadicts wakabatanidzwa unodzokororwa. Sarudzo chete yaunowanzo fanirwa kuita ndeyekuti unoda indentation yakawanda sei kuti iverengeke kana ichienzaniswa nehukuru hwefaira.

Kuverenga JSON kubva kufaira ndiko kunopesana: vhura faira iri muchimiro chemavara, pfuudza chinhu chefaira ku json.load(), uye unowana chimiro chako chedata rePython. Zvakare, maitiro acho haaenderane nekuti nesting yakadzika sei—decoder inobata zvese izvozvo iwe.

Kana uchida kuwedzera data reJSON kumafaira aripo, zvinhu zvinova nepfungwa dzakasiyana. JSON pachayo haitsigire "streaming append" nenzira isina basa nekuti faira rese rinofanira kunge riri JSON inoshanda. Maitiro akajairika ndeekuchengetedza zvinyorwa zvakawanda uye kuverenga/kugadzirisa/kunyora zvinyorwa zvese, kana kushandisa JSON yakaganhurirwa mutsara apo mutsetse wega wega uri chinhu chakasiyana cheJSON chaunogona kubatanidza nacho pasina kunyorazve mitsara yapfuura.

JSON Munyika Chaiyo: API, Kuchengetedza, Uye Kuchinjana

Kana wangotanga kuvaka maapplication chaiwo, JSON inokurumidza kuva guruu iyo inobatanidza mawebhusaiti nemasevha, ma microservices, uye ma API evamwe vanhu. Inokosheswa nekuti idiki uye nekuti vanhu vachiri kukwanisa kuiverenga nekuigadzirisa zviri nyore.

Mukudyidzana kweAPI, JSON ndiyo inonyanya kushandiswa payload format, kunyanya mumasevhisi eRESTful. Mapurogiramu ePython anowanzo shandisa maraibhurari akadai se requests kutumira zvikumbiro zveHTTP uye gamuchira mhinduro dzeJSON, wobva waongorora mhinduro idzodzo ne json.loads() kana nenzira dzekubatsira dzinoiputira.

JSON ifomati inozivikanwawo yemafaira ekugadzirisa uye magwaro, uko chimiro chayo chakarongeka, chakakosha chinoita kuti ive inonzwisisika kupfuura zvinyorwa zvisina kujeka uku ichiramba iri nyore kana tichienzanisa nemadhatabhesi akazara. Zvikamu zvesisitimu zvinogona kugovera magadzirirwo kuburikidza neJSON, uye maaggregator elog anogona kuongorora marogi eJSON kuti asefe kana kuaongorora zviri nyore.

Imwe nyaya huru yekushandisa ndeye serialization uye deserialization yedata structures, kushandura maunganidzwa ari mundangariro kuita maJSON strings (serialization) uye wozoavakazve gare gare (deserialization). Aya ndiwo maitiro aunochengetedza zvaunofarira zvevashandisi, tumira mameseji akarongeka kuburikidza nemitsara, kana kutumira zvinhu zvakakomberedzwa kuburikidza nemiganhu yebasa, chero bedzi iwe uchinamatira kune mhando dzinoenderana neJSON kana kupa ma encoders akagadzirwa.

Kupfuura JSON chete, Python kodhi inowanzo fanirwa kushandura pakati peJSON nemamwe mafomati, zvakaita seXML, CSV, kana text isina chinhu. Semuenzaniso, unogona kuverenga CSV kubva musystem yekare, woishandura kuita runyorwa rwemadict, wozoisiya seJSON yeAPI yemazuva ano. Kana kuti unogona kudhonza JSON kubva kuAPI, woigadzirisa, wonyora CSV kuti vaongorori vaiise mumaspredishiti.

Kugadzira, Kusimbisa, uye Mamwe Mashandiro paJSON

Kana wangonzwa kugadzikana nekuverenga nekunyora zviri nyore, Kune mabasa madiki asi anobatsira aunogona kuita padata reJSON kuti uvandudze mashandiro ebasa rako: kugadzira mafomati kuti averengeke, kugadzirisa marongerwo akavakirwa, kusimbisa kuti tambo ndiyo JSON chaiyo, uye kuronga data kuti rienzaniswe zvakaenzana.

Kudhinda kwakanaka ne json.dumps(..., indent=...) ndiyo danho rekutanga, zvichikupai nzvimbo dzakarongwa zvakanaka dzinoita kuti zvive nyore kuona matambudziko emuumbirwo wenyaya nekukurumidza. Izvi zvinobatsira zvikuru panguva yekugadzirisa matambudziko kana pakugovana mienzaniso mumagwaro.

Kuisa JSON yakatsetseka kunogona kuita kuti kugadzirisa nekuongorora zvive nyore, kunyanya kana uchida kushandura data kuita fomu retabhura seCSV kana kuriisa muzvishandiso zvinotarisira ma key-value pairs pane zvinhu zvakadzika midzi. Unowanzo shandura data rako uchishandisa recursion kana iterative traversal pamusoro pedicts and lists.

Kusimbisa JSON kunowanzo wedzera kusvika pakuedza kuiongorora uye kubata zvisizvo, kunyanya kana uri kungosimbisa kuti tambo yakarurama. Kuti uwane ongororo dzakasimba, unogona kushandisa JSON Schema nemaraibhurari ekunze, asi kazhinji zviri nyore try/except kumativi json.loads() zvakwana.

Kuronga data reJSON nemaitiro chaiwo kana makiyi kunogona kubatsira pakuenzanisa mhinduro, kugadzira mapikicha akagadzikana ekuyedza, kana kungoita shuwa kuti zvinhu zvakafanana zvabatanidzwa pamwe chete. Unogona kuronga rondedzero dzePython nedicts usati warasa kana kuvimba nazvo sort_keys=True kana pfungwa iri pakurongeka kwemakiyi mukati mezvinhu.

Kugadzirisa Zvikanganiso Paunenge Uchishanda naJSON

Kunyangwe masisitimu akarongeka zvakanaka anogona kusangana neJSON isina kurongeka kana data risingatarisirwi, saka kugadzirisa zvikanganiso zvakasimba zvakatenderedza JSON paring uye encoding kwakakosha. Python inoratidza matambudziko aya kuburikidza nekusarudzika, uye nzira isinganzwisisike yekugadzirisa nayo ndeyekuputira mashandiro mukati try...except mabhuroko.

Pakusarudza JSON, dambudziko rinowanzo itika inyaya isiriyo, zvakaita sekushaikwa kwemashoko pamusoro pemazita edzimba kana makoma anotevedzana. json module ichawedzera kukanganisa kwe decoding (kazhinji json.JSONDecodeError), dzaunogona kubata wonyora kana kushandura kuita mameseji ari nyore kushandisa.

Semuenzaniso, kuyedza kutsanangura tambo yakatyoka kunogona kukonzera kukanganisa kwakadai: Failed to decode JSON: Expecting property name enclosed in double quotes: line 1 column 29 (char 28)Rudzi urwu rwemeseji runokuudza kwete chete kuti kupatsanura kwakundikana asi kuti mukupinda kwacho paser yakavhiringidzika papi.

Padivi rekunyora, unogona kurova TypeError kana uchiedza kutevedzera mhando dzisina kutsigirwa, or ValueError kana usingabvumiri NaN uye infinities kuburikidza allow_nan=False asi data rako rine zvinhu zvakadaro. Mareferensi akatenderera ari mumidziyo anogonawo kukonzera RecursionError kana ukadzima macheki edenderedzwa.

Nzira yakanakisa ndeyekubata mashandiro eJSON seI/O inokanganisika, kunyanya kana uchiverenga kubva kune network sources kana mafaira ekunze: gara uchifungidzira kuti chimwe chinhu chingakanganisika uye tora zvimwe zvisiri izvo zvinoenderana nazvo, pamwe kuwedzera zvidimbu zvekusimbisa kuti usimbise zvirambidzo zvakananga padata rako. json.loads() kana nzira dzekubatsira dzeAPI mu try...except mabhuroko anodzivirira mamwe makodhi ako kubva mukukundikana kukuru uye anokutendera kuti udzoke zvikanganiso zveJSON zviri nyore kushandisa kune vatengi kana zvakakodzera.

Kushandisa JSON neWeb APIs muPython

Mawebhu API mazhinji aunotaura nawo kubva kuPython anotumira uye anogashira JSON, uye budiriro yakajairika inosanganisa requests raibhurari (yeHTTP) ine json module (yekuongorora nekugadzira JSON). Musanganiswa uyu unoita kuti kubatanidzwa kweAPI kunzwe sekwakasikwa.

Maitiro akajairika ndeekudana API endpoint, tarisa kuti kodhi yemamiriro emhinduro inoratidza kubudirira, wobva wa ongorora muviri weJSONKubva ipapo unogona kuwana minda, kubata data rakachengetedzwa, uye kuisa mhinduro yacho mumamodheru ako edomeni kana kuona zvinhu.

Kugadzirisa zvikanganiso kunonyanya kukosha kana paine mafoni enetwork, nekuti unogona kusangana neJSON isina kushanda chete asiwo nenguva dzekudzima, zvikanganiso zvekubatanidza, kana zvikanganiso zvepadivi peseva zvinopindura neHTML pachinzvimbo cheJSON. json.loads() kana nzira dzekubatsira dzeAPI mu try...except Zvivharo zvinodzivirira zvimwe zvese zvekodhi yako kubva mukukundikana kukuru.

Kana yangoongororwa, API JSON inoita seimwe nzira yePython data structure, saka matekiniki ese akakurukurwa kare—kudhinda kwakanaka, kupfava, kusimbisa, kurongedza—anoshanda zvakananga. Kuva wakasununguka kufamba pakati pePython data neJSON kunowedzera kubudirira kana muchibatanidza masevhisi ekubatanidza waya. Kana muchinyanya kutarisa pa kuvaka mafomu chaiwo, kunyatsoteerera maitiro ekugadzirisa JSON nekukurumidza kuchachengetedza nguva yekugadzirisa matambudziko gare gare.

JSON muPython hainyanyi kutaura nezvekufona kwebasa rimwe chete asi nezvebhokisi rezvishandiso: mamepu emhando dzakajeka, maparameter ekunyora anochinjika, mahoko emhando dzakagadzirirwa, I/O yefaira iri nyore asi ine simba, uye mapatani akasimba ekuongorora, kufomata, uye kusimbisa data kubva kunze kwenyika, zvese izvi zvinoita kuti JSON ive yakakodzera kune vanogadzira mapurogiramu ePython vanoshanda nemapurogiramu emazuva ano anotungamirirwa nedata.

Nyaya inoenderana:
Yakagadziriswa: tora data rewebhu sejson python
Related posts: