UltKit

JSON formatlayıcı və validator

JSON-u səliqəli formata salmaq, sıxmaq və ya açarlarını sıralamaq üçün onu yapışdırın. Təhlil alınmazsa, formatlayıcı parserin dayandığı sətri və sütunu göstərir, problemin altına isə göstərici qoyur. Beləliklə, 3000 sətirlik cavabda çatışmayan vergülü bir neçə saniyəyə tapa bilərsiniz.

Çıxış

0 simvol · 0 söz · 0 sətir

0 simvol · 0 söz · 0 sətir

Tamamilə bu brauzer səkməsində işləyir. Mətniniz heç vaxt yüklənmir və saxlanmır.

JSON dəyər tipləri

RFC 8259 məhz bu dəyərlərə icazə verir. Obyekt və massivlər içiçə ola bilər; qalanları yarpaq dəyərlərdir.

TipNümunəQayda
Obyekt{"id": 7, "tags": ["a"]}Açarlar cüt dırnaqlı sətir olmalıdır; üzvlər vergüllə ayrılır, sonda artıq vergül olmur.
Massiv[1, "two", null]İstənilən dəyərlərin sıralı siyahısı, qarışıq tiplər mümkündür.
Sətir"caf\u00e9 \"quoted\""Yalnız cüt dırnaq; idarəetmə simvolları ekranlaşdırılmalıdır; \u ekranlaşdırması dörd hex rəqəmdən ibarətdir.
Ədəd-12.5e3Yalnız onluq: ixtiyari mənfi işarə, başda sıfır yoxdur, ixtiyari kəsr və üstlük. NaN və Infinity yoxdur.
true, false və nulltrueKiçik hərflə, dırnaqsız.

Parserin rədd etdikləri

Aşağıdakı hər giriş bu səhifə qurularkən formatlayıcının istifadə etdiyi eyni JSON.parse-a verilib.

GirişProblemJSON.parse
{"a": 1,}Sondakı vergülRədd edilir
{'a': 1}Tək dırnaqlı sətirlərRədd edilir
{"a": 1 /* note */}ŞərhlərRədd edilir
{a: 1}Dırnaqsız açarRədd edilir
{"n": NaN}NaN JSON ədədi deyilRədd edilir
{"n": 012}Başda sıfırRədd edilir
{"n": 0x1F}Onaltılıq ədədRədd edilir

JSON sətirlərində ekranlaşdırma

SimvolJSON-da yazılışı
Cüt dırnaq"\""
Tərs xətt"\\"
Sətir keçidi"\n"
Tab"\t"
Carriage return"\r"
İdarəetmə simvolu U+0001"\u0001"
Düz xətt (ekranlaşdırma ixtiyaridir)"/"
ASCII olmayan hərf (ekranlaşdırma lazım deyil)"é"

Düzgün JSON sənədinin riayət etdiyi qaydalar

JSON RFC 8259 ilə müəyyən edilir (mahiyyətcə ECMA-404 ilə eynidir). Sənəd tək bir qiymətdən ibarətdir: obyekt, massiv, sətir, ədəd, true, false və ya null. Obyekt açarları həmişə cüt dırnaq içində sətir olur. Sətirlərdə yalnız cüt dırnaq işlənir, dırnaq işarəsi, tərs mail xətt və U+0020-dən aşağı bütün idarəetmə simvolları ekranlanmalıdır; buna görə sətir daxilindəki tab və sətir keçidləri \t və \n kimi yazılır. RFC 8259 həmçinin sistemlər arasında mübadilə olunan JSON üçün UTF-8 tələb edir.

Ədədlər onluq say sistemindədir: başında sıfır, onaltılıq say, NaN və ya Infinity, həmçinin qabağında plyus işarəsi ola bilməz. Formatda şərh və sonda artıq vergül yoxdur. Real həyatdakı xətaların çoxunu məhz bu son iki qayda yaradır, çünki JavaScript obyekt literalları, JSON5 və bir çox konfiqurasiya faylı hər ikisinə icazə verir. Aşağıdakı sorğu cədvəli hər geniş yayılmış səhvin formatlaşdırıcının istifadə etdiyi eyni parserə verilməsi ilə hazırlanıb.

Səliqəli format, sıxma, sıralama

Gözəl çap (pretty-print) strukturun oxunaqlı olması üçün sətir keçidləri və girintilər əlavə edir; JavaScript layihələrində ən çox iki boşluq, Python-un json.dumps(indent=4) ilə isə adətən dörd boşluq işlənir, tab isə hər oxucuya eni özü seçməyə imkan verir. Kiçiltmə (minify) bütün əhəmiyyətsiz boşluqları silir, bu da API yüklərini azaldır və sənədi log və ya mühit dəyişənləri üçün bir sətrə sığdırır.

Açarları sırala hər obyektin üzvlərini rekursiv şəkildə əlifba sırası ilə düzür. JSON obyektləri tərifinə görə sırasızdır, ona görə sıralama mənanı dəyişmir, amma müxtəlif sistemlərdən gələn iki sənədi müqayisə etməyi xeyli asanlaşdırır. Nəzərə alın ki, parsing ədədləri JavaScript double-a çevirir: 2^53-dən (9 007 199 254 740 992) böyük tam ədədlər, məsələn bəzi verilənlər bazası ID-ləri, yenidən formatlaşdırılanda dəqiqliyini itirir, ona görə onları sətir kimi saxlayın.

JSON-dan digər formatlara

Formatlanmış sənədi oxumaq asandır, amma bəzən ona başqa formada ehtiyac olur. Obyektlər massivi JSON-u CSV-yə çevirmək ilə cədvələ çevrilir, məlumat çeviricisi isə bütün faylları JSON, XML, YAML və CSV arasında köçürür.

Tez-tez verilən suallar

Formatlayıcı şərhlər olan JSON-u niyə qəbul etmir?
Standart JSON-da şərh sintaksisi yoxdur; RFC 8259 bunu qəsdən buraxıb. Şərhləri silin və ya faylı oxuyan alət dəstəkləyirsə, onu JSONC və ya JSON5 kimi saxlayın.
JSON xətasında "Unexpected token" nə deməkdir?
Parser həmin mövqedə ola bilməyən simvola rast gəlib, məsələn tək dırnaq, } qarşısında artıq vergül və ya dırnaqsız açar. Göstərilən sətir və sütun məhz bu simvolu göstərir.
Açarların sıralanması məlumatlarımı dəyişirmi?
Xeyr. JSON-da obyekt üzvlərinin sırası məna daşımır, ona görə sıralanmış sənəd eynidir. Massiv sırası mühümdür və heç vaxt dəyişdirilmir.
Formatlamadan sonra uzun rəqəm niyə dəyişdi?
JavaScript ədədləri 64 bitlik float kimi saxlayır və bu yalnız 2^53-ə qədər tam ədədləri dəqiq göstərir. Daha böyük ID-lər parsing zamanı yuvarlaqlaşdırılır; bütün rəqəmləri qorumaq üçün onları sətir kimi ötürün.
Yapışdırmaq əvəzinə JSON faylını formatlaya bilərəmmi?
Faylı istənilən mətn redaktorunda açın, hamısını seçin və bura yapışdırın. On meqabaytlarla ölçülən çox böyük fayllar mətn sahəsi onları göstərərkən səhifəni yavaşlada bilər.