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.
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.
| Tip | Nü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.5e3 | Yalnı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ə null | true | Kiç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ş | Problem | JSON.parse |
|---|---|---|
{"a": 1,} | Sondakı vergül | Rədd edilir |
{'a': 1} | Tək dırnaqlı sətirlər | Rədd edilir |
{"a": 1 /* note */} | Şərhlər | Rədd edilir |
{a: 1} | Dırnaqsız açar | Rədd edilir |
{"n": NaN} | NaN JSON ədədi deyil | Rədd edilir |
{"n": 012} | Başda sıfır | Rədd edilir |
{"n": 0x1F} | Onaltılıq ədəd | Rədd edilir |
JSON sətirlərində ekranlaşdırma
| Simvol | JSON-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.