Pretvori JSON tekst u Python podatke, a zatim ponovo nazad.
JSON je tekst sa standardnom strukturom. Python ne može da koristi taj sirovi tekst na potpuno isti način kao rečnik ili listu, zato json.loads() parsira JSON tekst u Python podatke. Kada radiš sa Python podacima, json.dumps() ponovo pravi JSON tekst.
import json
student_json = '{"name": "Ana", "score": 95}'
student = json.loads(student_json)
print(student["name"])
result = json.dumps(student)
print(result)student_json je string koji sadrži JSON tekst. json.loads(student_json) čita taj tekst, prepoznaje njegovu strukturu i vraća Python rečnik. Nakon toga student["name"] radi zato što je student Python podatak, a ne sirovi JSON tekst.
Ana
{"name": "Ana", "score": 95}json.loads() znači JSON string → Python vrednost. json.dumps() znači Python vrednost → JSON string. Nijedan poziv nije magičan: svaki vraća novu vrednost, a ovaj primer vraćenu vrednost čuva pod novim imenom.
Koristi ovo kao glavnu JSON mapu: JSON tekst → json.loads() → Python podaci → rad sa podacima ili izmena → Python podaci → json.dumps() → JSON tekst
import json
student_json = '{"name": "Ana", "score": 95}'
student = json.loads(student_json)
print(student["name"])
student["score"] = 100
result = json.dumps(student)Najpre je student_json tipa str. loads() parsira njegov JSON tekst i pretvara student u Python dict. Rečnik se može normalno čitati i menjati, pa rezultat postaje 100. Na kraju dumps() vraća novi JSON string u result; student je i dalje Python rečnik.
student_json = '{"name": "Ana", "score": 95}'
student = {"name": "Ana", "score": 95}Ove vrednosti mogu izgledati slično, ali navodnici oko cele prve vrednosti čine je jednim stringom koji sadrži JSON tekst. Druga vrednost je Python rečnik. Python ih tretira kao različite tipove, zato parsiraj JSON tekst pre korišćenja ključeva rečnika.
student = json.loads(student_json)
print(student["score"])Parsiranje znači čitanje strukturiranog teksta i pravljenje odgovarajuće Python strukture. Ovde JSON object postaje rečnik, pa Python može da pronađe "score" pomoću operacije nad rečnikom koju već poznaješ.
result = json.dumps(student)
print(result)dumps() prima Python vrednost, kao što su rečnik ili lista, i vraća JSON tekst kao string. Ne menja originalni rečnik; result čuva novi JSON string, baš kao što funkcija može da vrati novu vrednost pod drugim imenom.
JSON object → Python dict
JSON array → Python list
JSON string → Python str
JSON number → Python int or float
JSON true / false → Python True / False
JSON null → Python NoneOvo je praktična mapa, a ne spisak koji treba odjednom naučiti napamet. Važna ideja je da loads() pretvara JSON strukturu u Python vrednosti koje već znaš da koristiš.
course_json = '{"title": "Python", "students": ["Ana", "Marko"]}'
course = json.loads(course_json)
print(course["students"][0])JSON object postaje rečnik course, a njegov array students postaje Python lista. Nakon parsiranja čitaj podatke jednim poznatim korakom po jednim: najpre ključ rečnika, zatim indeks liste.
settings_text = json.dumps({"theme": "dark", "font_size": 16})Programi često razmenjuju strukturirane informacije, web servisi šalju strukturirane podatke, a aplikacije čuvaju jednostavna podešavanja. JSON različitim programima i jezicima daje zajednički tekstualni format, dok Python tebi lokalno daje rečnike i liste za rad.
Praktičan kontrolni spisak za čitanje JSON koda
- Pronađi početnu vrednostDa li je to JSON tekst u stringu ili već Python podatak?
- Pronađi pretvaranjeDa li kod poziva
json.loads()ilijson.dumps()? - Odredi tip rezultataKoji je Python tip dostupan posle
loads()? Posledumps()rezultat je string. - Prati pristup podacimaKoji ključ rečnika ili indeks liste kod koristi nakon parsiranja?
- Prati izmeneDa li kod menja Python rečnik ili listu nakon parsiranja?
- Pronađi konačni rezultatDa li program ispisuje Python vrednost ili JSON tekst koji vraća
dumps()?
Česte početničke greške
- Tretiranje JSON teksta kao da je već rečnikKoristi
json.loads()pre pokušaja izraza kao što jestudent_json["name"]. - Očekivanje da loads() vrati JSON tekst
loads()vraća Python podatke, kao što su rečnik ili lista, pa sa njima možeš da radiš pomoću Python operacija. - Očekivanje da dumps() vrati rečnik ili listu
dumps()vraća jedan JSON string. Sačuvaj ga pod imenom kao što jeresultkada kasnijem kodu treba tekst. - Zaboravljanje da ispravan JSON ima JSON sintaksuJSON tekst mora da koristi sopstvenu ispravnu sintaksu, uključujući obavezne dvostruke navodnike oko ključeva objekta i string vrednosti.
- Gubljenje iz vida tipa vrednostiU svakom koraku se zapitaj da li ime trenutno čuva JSON tekst, Python rečnik, listu ili neku drugu Python vrednost.
- Menjanje pogrešne vrednostiPromeni parsirani Python rečnik ili listu, a zatim pozovi
dumps()kada ti treba novi JSON tekst.
