JSON Formatter ir validatorius

Acrafto Team Kūrėjai
Atnaujinta
Laukiama įvesties. Įklijuokite JSON aukščiau arba nutempkite .json failą.

Įklijuokite bet kokį JSON į laukelį aukščiau ir šis JSON formatter bei validatorius jį patikrins jau rašymo metu. Teisinga įvestis suformatuojama pasirinkta įtrauka arba suglaudinama į vieną eilutę. Neteisingai įvesčiai parodoma tiksli klaida su eilute ir stulpeliu, paryškinta ištrauka, o dažniausioms klaidoms ir taisymas vienu paspaudimu. Viskas veikia jūsų naršyklėje, todėl API atsakymai, konfigūracijos failai ir eksportuoti duomenys niekada nepalieka jūsų kompiuterio.

Ką daro šis JSON formatter

  • JSON formatavimas su 2 tarpais, 4 tarpais arba tabuliacija. Rezultate išlieka pradinė raktų tvarka, nebent pažymėsite Rikiuoti raktus.
  • JSON minifikavimas pašalinant visus tarpus ir eilučių lūžius. Dydžio rodmuo po rezultatu parodo, kiek baitų sutaupėte.
  • JSON validavimas realiuoju laiku pagal RFC 8259, dabartinį JSON standartą. Būsenos eilutė tampa žalia, kai tik dokumentas yra teisingas.
  • Automatinis dažnų klaidų taisymas: pašalina perteklinius kablelius ir komentarus, viengubas kabutes pakeičia dvigubomis, prideda kabutes aplink raktus, Python stiliaus True, None ir NaN paverčia JSON reikšmėmis, pataiso skaičius kaip .5 ar +1.
  • Failų įkėlimas mygtuku Atidaryti failą arba nutempus .json failą ant įvesties laukelio. Rezultatą galite atsisiųsti arba grąžinti į įvestį dar vienam apdorojimui.

Kodėl JSON validatoriaus klaidos pranešimas svarbesnis už raudoną spalvą

Dauguma internetinių validatorių tik praneša, kad kažkas negerai. Naršyklės ne ką geresnės: JSON.parse Chrome naršyklėje praneša Unexpected token } in JSON at position 148, Firefox rašo expected property name or '}', ir nė viena nepasako, kurią eilutę tikrinti. Šis įrankis turi savo analizatorių, kuris įsimena, kur prasideda kiekvienas elementas. Kai analizatorius sustoja, gaunate eilutę ir stulpelį, tos eilutės ištrauką su ženklu ^ po klaidingu simboliu ir aiškią užuominą, pavyzdžiui, Tikriausiai trūksta kablelio tarp dviejų savybių. Mygtukas Pereiti prie klaidos perkelia žymeklį tiesiai į tą vietą įvestyje.

Dažniausios klaidos, kurias matome įklijuotuose dokumentuose:

ĮvestisProblemaTeisingas JSON
{'name': 'Ada'}viengubos kabutės{"name": "Ada"}
{name: "Ada"}raktas be kabučių{"name": "Ada"}
[1, 2, 3,]perteklinis kablelis[1, 2, 3]
{"a": 1 "b": 2}trūksta kablelio{"a": 1, "b": 2}
{"ok": True}Python literalas{"ok": true}
{"x": 007}nulis priekyje{"x": 7} arba {"x": "007"}
// commentkomentarasJSON neleidžiamas

Mygtukas Pataisyti už mane ištaiso visas šias klaidas, išskyrus trūkstamą kablelį ir nulį priekyje. Taisymas sąmoningai atsargus: jis niekada nespėlioja, kur turėtų būti trūkstamas kablelis, nes ne toje vietoje įterptas kablelis pakeistų duomenų prasmę, o 007 gali reikšti ir skaičių 7, ir kodą. Tokiais atvejais gaunate tikslią klaidos vietą.

Dideli skaičiai, raktų tvarka ir kiti dalykai, kurie dažniausiai sugenda

Daugelis formatavimo įrankių iškviečia JSON.parse, o po to JSON.stringify. Toks ratas tyliai gadina duomenis. Twitter ar Snowflake ID, pavyzdžiui, 1234567890123456789, viršija JavaScript skaičių ribą 2^53 ir grįžta kaip 1234567890123456800. Reikšmė 1.0 virsta 1, o 1e3 virsta 1000. Šis įrankis niekada neverčia skaičių slankiojo kablelio skaičiais. Kiekvieną literalą jis nukopijuoja tiksliai taip, kaip šis buvo parašytas, todėl rezultatas yra tikslus įvesties performatavimas, o ne jos perinterpretavimas. Tas pats galioja ekranavimo sekoms tekstinėse reikšmėse: "\u00e9" lieka "\u00e9" ir nevirsta "é".

Raktų tvarka taip pat išsaugoma. JSON specifikacijoje nurodyta, kad objekto nariai neturi tvarkos, tačiau konfigūracijos failai, testų duomenys ir kodo peržiūros skaitomi daug lengviau, kai tvarka pastovi. Jei jums labiau tinka kanoninė forma, pavyzdžiui, norite palyginti du API atsakymus skirtumų (diff) įrankiu, įjunkite Rikiuoti raktus ir abiejų dokumentų savybės bus išrikiuotos abėcėlės tvarka visuose įdėjimo lygiuose.

JSON formatavimas ar minifikavimas: kada ką rinktis

Suformatuotas JSON skirtas žmonėms. Naudokite jį, kai peržiūrite API atsakymą, rašote package.json, tsconfig.json ar OpenAPI dokumentą arba kai saugote testų duomenis repozitorijoje, kurioje skirtumai turėtų rodyti po vieną pakeitimą eilutėje. Du tarpai yra įprasti JavaScript pasaulyje, keturi tarpai dažni Python ir .NET projektuose, o tabuliacija leidžia kiekvienam skaitytojui pasirinkti savo plotį.

Minifikuotas JSON skirtas mašinoms. Tarpai paprastai sudaro nuo 20 iki 40 procentų suformatuoto dokumento, todėl juos pašalinus sumažėja į naršyklę siunčiami duomenys, Redis ar duomenų bazės stulpelyje saugomos reikšmės ir į HTML įterpti data-* atributai. Gzip dalį šio skirtumo sumažina, tačiau minifikuota versija vis tiek suglaudinama į mažesnį failą. Dydžio rodmuo po rezultatu parodo tikslų skirtumą jūsų dokumentui.

Darbas su JSON terminale ir redaktoriuose

Failus, kuriuos apdorojate pakartotinai, greičiau tvarkyti komandinės eilutės įrankiu nei bet kuria svetaine. jq . file.json formatuoja, jq -c . file.json minifikuoja, o python -m json.tool file.json veikia visur, kur įdiegtas Python. Visual Studio Code formatuoja JSON klavišais Shift+Alt+F ir tikrina jį pagal schemą, kai pridedate $schema savybę. Šis puslapis skirtas kitiems atvejams: atsakymui, nukopijuotam iš naršyklės tinklo skirtuko, žurnalo eilutei, konfigūracijos fragmentui iš wiki arba greitam patikrinimui kompiuteryje, kuriame negalite nieko įdiegti.

Susiję įrankiai šioje svetainėje: Base64 koduotuvas ir dekoduotuvas dekoduoja JWT duomenų dalį, kuri yra JSON, užkoduotas Base64url. UNIX laiko žymės keitiklis daugumoje API atsakymų randamus createdAt skaičius paverčia skaitomomis datomis, o UUID dekoderis parodo jūsų duomenyse esančių identifikatorių versiją ir laiko žymę. Daugiau įrankių rasite kategorijoje Kūrėjai.

Dažnai užduodami klausimai

Ar mano JSON siunčiamas į serverį? Ne. Analizė, formatavimas ir taisymas vyksta tik jūsų naršyklėje, naudojant JavaScript. Kai puslapis įsikelia, galite atsijungti nuo interneto ir įrankis veiks toliau. Niekas nėra registruojama ar saugoma.
Kodėl validatorius atmeta komentarus, nors mano redaktorius juos priima? Komentarus iš JSON sąmoningai pašalino formato autorius Douglas Crockford, kad formatas nebūtų naudojamas analizatoriaus direktyvoms. Tokie failai kaip tsconfig.json ar .vscode/settings.json techniškai yra JSONC, t. y. išplėstinis formatas, kurį palaiko redaktoriai. Griežti analizatoriai API, duomenų bazėse ir daugumoje programavimo kalbų komentarus atmeta. Taisymo mygtukas juos pašalina, todėl rezultatas tinka visur.
Ar galiu formatuoti JSON Lines arba kelis objektus vienu metu? JSON dokumente yra lygiai viena reikšmė. Jei įklijuosite kelis objektus, atskirtus kableliais ar eilučių lūžiais, validatorius sustos ties pirma papildoma reikšme. Apgaubkite juos laužtiniais skliaustais, kad gautumėte masyvą, ir tada formatuokite. Taisymo mygtukas to nedaro automatiškai, nes negali žinoti, ar įvestis turėjo būti vienas dokumentas.
Koks didžiausias leidžiamas dydis? Fiksuoto apribojimo nėra. Kelių megabaitų dokumentai nešiojamajame kompiuteryje suformatuojami gerokai greičiau nei per sekundę. Kai dokumentas viršija maždaug 400 kB, sintaksės paryškinimas išjungiamas, kad puslapis reaguotų sklandžiai, tačiau kopijavimas ir atsisiuntimas veikia toliau.
Ar raktų rikiavimas pakeičia duomenis? Ne. JSON objektai pagal apibrėžimą neturi tvarkos (žr. straipsnį apie JSON Vikipedijoje), todėl analizatorius surikiuotą ir pradinį dokumentą perskaito kaip tą pačią reikšmę. Masyvai niekada neperrikiuojami, nes jų tvarka yra duomenų dalis.
Kaip ekranuoti JSON, kad jį būtų galima įterpti į tekstinę eilutę? Pirmiausia minifikuokite, tada ekranuokite kiekvieną atvirkštinį pasvirąjį brūkšnį ir dvigubą kabutę. Daugelyje kalbų tam yra paruošti sprendimai: JSON.stringify(JSON.stringify(obj)) JavaScript kalboje arba json.dumps(json.dumps(obj)) Python kalboje sukuria JSON eilutę, kurioje yra JSON tekstas.

Būčiau dėkingas, jei pasidalintumėte šiais puslapiais su draugais, išsaugotumėte juos žymėse ar nuorodą. Ačiū! 🙏