Šta JSON čini neispravnim
JSON je stroži od JavaScripta, a greške su gotovo uvek jedna od nekoliko stvari:
| Greška | Zašto | Ispravka |
|---|---|---|
| {"a": 1,} | Završni zarez | Uklonite zarez pre } ili ]. |
| {'a': 1} | Jednostruki navodnici | Stringovi i ključevi koriste samo dvostruke navodnike. |
| {a: 1} | Ključ bez navodnika | Stavite ga pod navodnike: "a". |
| // comment | U JSON-u nema komentara | Uklonite ih, ili koristite JSON5 / JSONC tamo gde ih potrošač podržava (VS Code podešavanja, tsconfig). |
| 0123, .5, NaN, Infinity | Nisu ispravni brojevi | Bez vodećih nula, cifra pre tačke, bez NaN/Infinity. |
| "line\nbreak" | Doslovni novi red unutar stringa | Escape-ujte ga kao \n. |
| undefined | Nije JSON vrednost | Koristite null. |
Tolerantni režim uklanja komentare i završne zareze i pretvara jednostruke navodnike pre parsiranja, što je zgodno za ručno pisane konfiguracione datoteke. Izlaz je uvek strogi JSON.
YAML
YAML je u duhu nadskup JSON-a (svaki JSON dokument je ispravan YAML), ali daleko veći: uvlačenje definiše strukturu, stringovi su obično bez navodnika, a neke gole reči imaju iznenađujuća značenja. yes, no, on i off postaju logičke vrednosti u YAML 1.1 parserima, 022 može postati oktalno 18, a 3.10 postaje 3.1. Konvertor stavlja takve vrednosti pod navodnike pri ispisu YAML-a da bi konverzija bila povratna. Smer YAML → JSON podržava uobičajeni blok podskup: mapiranja, liste, skalare, stringove pod navodnicima, flow kolekcije i | / > blokove.
Veliki dokumenti
Sve radi u vašem pregledaču, pa je nekoliko megabajta u redu. Statistika stabla (dubina, broj objekata i nizova) pomaže da uočite neočekivano ugnežđene podatke pre nego što ih učitate u nešto što će se na njima zagrcnuti.
Pitanja
Zašto je moj JSON neispravan kad radi u JavaScriptu?
JavaScript objektni literali dozvoljavaju ključeve bez navodnika, jednostruke navodnike, završne zareze, komentare i heks brojeve. JSON ne dozvoljava ništa od toga. Uključite tolerantni režim da vidite kako bi izgledao strogi oblik.
Kako da nađem grešku u redu 2000 velike datoteke?
Validator prijavljuje red i kolonu i prikazuje tekst oko greške. Većina editora može da skoči na red pomoću Ctrl-G.
Da li formatiranje menja podatke?
Ne. Formatiranje i minifikacija menjaju samo beline. Sortiranje ključeva menja redosled, koji JSON ne smatra značajnim, ali neki potrošači (potpisi, kanonski JSON) smatraju.
Zašto je broj izgubio preciznost?
JavaScript brojevi su double vrednosti, pa se celi brojevi iznad 2⁵³ (oko 9 × 10¹⁵) zaokružuju pri parsiranju. Ako formatirate dokument sa takvim ID-jevima, čuvajte ih kao stringove.