Viac na
Ako zapísať údaje JSON do súboru?
V premennej data
mám uložené údaje JSON.
Chcem to zapísať do textového súboru na testovanie, aby som nemusel zakaždým chytať údaje zo servera.
Momentálne skúšam toto:
obj = open('data.txt', 'wb')
obj.write(data)
obj.close
A dostávam chybu:
TypeError: must be string or buffer, not dict
Ako to opraviť?
982
3
Zabudli ste na skutočnú časť JSON -
data
je slovník a ešte nie je zakódovaný do JSON. Napíšte ho takto pre maximálnu kompatibilitu (Python 2 a 3):V modernom systéme (t. j. Python 3 a podpora UTF-8) môžete napísať krajší súbor s
Ak chcete získať súbor utf8-encoded na rozdiel od ascii-encoded v akceptovanej odpovedi pre Python 2, použite:
Kód je v Pythone 3 jednoduchší:
V systéme Windows je stále potrebný argument
encoding='utf-8'
preopen
.Ak sa chcete vyhnúť ukladaniu kódovanej kópie údajov do pamäte (výsledok
dumps
) a na výstup utf8-kódovaných bajtových reťazcov v Pythone 2 aj 3, použite:Volanie
codecs.getwriter
je v Pythone 3 zbytočné, ale v Pythone 2 je potrebnéČítateľnosť a veľkosť:
Použitie
ensure_ascii=False
poskytuje lepšiu čitateľnosť a menšiu veľkosť:Čitateľnosť ďalej zlepšíte pridaním príznakov
indent=4, sort_keys=True
(ako navrhuje dinos66) k argumentom príkazudump
alebodumps
. Takto'získate pekne odsadenú zoradenú štruktúru v súbore json za cenu mierne väčšej veľkosti súboru.Odpovedal by som s malou modifikáciou s vyššie uvedenými odpoveďami, a to je napísať skrátený súbor JSON, ktorý ľudské oči môžu lepšie čítať. Na tento účel odovzdajte
sort_keys
akoTrue
aindent
so 4 znakmi medzery a môžete začať. Dbajte tiež na to, aby sa do vášho súboru JSON nezapisovali kódy ascii: