Python Academy · Oppitunti

JSON-koodaus ja -dekoodaus

Käyttäkää json.loads-, json.dumps- ja json.load/dump-funktioita JSON-syötteeseen ja -tulosteeseen.

Oppitunti 1/414 vaihetta

JSON-koodaus ja -dekoodaus on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Johdanto

Pythonin json-moduuli muuntaa Python-olioiden ja JSON-merkkijonojen tai -tiedostojen välillä yksinkertaisilla ja johdonmukaisilla funktioilla.

json.dumps()

json.dumps(obj) serialisoi Python-olion JSON-merkkijonoksi. indent=2 muotoilee tulosteen luettavaksi.
import json
d = {'name': 'Alice', 'age': 30, 'active': True}
print(json.dumps(d, indent=2))

json.loads()

json.loads(s) jäsentää JSON-merkkijonon Python-olioksi. JSON-oliot muuttuvat sanakirjoiksi ja taulukot luetteloiksi.
import json
s = '{"name": "Alice", "scores": [90, 85]}'
data = json.loads(s)
print(type(data), data['name'])

json.dump() tiedostoon

json.dump(obj, file_object) serialisoi olion suoraan tiedostoon. Merkkijonoa ei tarvitse ensin tallentaa muuttujaan.
import json, tempfile, os
tmp = tempfile.mktemp(suffix='.json')
with open(tmp, 'w') as f:
    json.dump({'x': 1}, f, indent=2)
print(open(tmp).read())
os.unlink(tmp)

json.load() tiedostosta

json.load(file_object) jäsentää JSONin suoraan avoimesta tiedosto-oliosta.
import json, io
buf = io.StringIO('{"key": "value"}')
data = json.load(buf)
print(data)

JSON-tyyppien vastaavuudet

JSON object→dict. array→list. string→str. number→int/float. true/false→True/False. null→None.
import json
s = '[1, "two", true, null, {"a": 3.14}]'
print(json.loads(s))

Ei-serialisoitavat tyypit

datetime, set ja bytes eivät ole JSON-serialisoitavia. Antakaa default=-funktio tai periyttäkää JSONEncoder.
import json
from datetime import datetime
def default(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError(f'{type(obj)} not serializable')
print(json.dumps({'ts': datetime.now()}, default=default))

sort_keys ja separators

sort_keys=True järjestää sanakirjan avaimet. separators=(',', ':') poistaa tyhjemerkit tiiviistä tulosteesta.
import json
d = {'z': 3, 'a': 1, 'm': 2}
print(json.dumps(d, sort_keys=True, separators=(',', ':')))

Tulosteen muotoilu

json.dumps(obj, indent=4, ensure_ascii=False) tuottaa ihmisille helposti luettavan JSONin ja säilyttää Unicode-merkit.
import json
d = {'name': 'Mehmet', 'city': 'Istanbul'}
print(json.dumps(d, indent=4, ensure_ascii=False))

JSONDecodeError

json.loads(invalid) nostaa json.JSONDecodeError-poikkeuksen. Käärikää jäsentäminen aina try/except-rakenteeseen, kun käsittelette käyttäjän syötettä.
import json
try:
    json.loads('{bad json}')
except json.JSONDecodeError as e:
    print(f'Parse error: {e}')

JSON-tiedostojen päivittäminen

Lukekaa → muuttakaa → kirjoittakaa takaisin: tämä on tavallinen tapa päivittää JSON-määritystiedosto.
import json, io
buf = io.StringIO('{"count": 5}')
data = json.load(buf)
data['count'] += 1
print(json.dumps(data))

Pikatarkistus

Millä funktiolla JSON-merkkijono jäsennetään Python-olioksi?

Kertaus

json.dumps/loads merkkijonoille, json.dump/load tiedostoille. Tyypit: object→dict, array→list, null→None. Mukautettu serialisointi default=-funktion avulla.

Jatkakaa

Jatkakaa samaan tapaan! Siirtykää seuraavaan oppituntiin.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”JSON-koodaus ja -dekoodaus” ilmainen?

Kyllä – oppitunnin ”JSON-koodaus ja -dekoodaus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”JSON-koodaus ja -dekoodaus”?

Käyttäkää json.loads-, json.dumps- ja json.load/dump-funktioita JSON-syötteeseen ja -tulosteeseen. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”JSON-koodaus ja -dekoodaus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JSON-koodaus ja -dekoodaus
  2. Sisäkkäisten JSON-rakenteiden käsittely
  3. CSV-tiedostojen lukeminen csv.readerillä
  4. CSV-tiedostoihin kirjoittaminen csv.DictWriterillä
← Takaisin: Python Academy