# JSON Formatter

> JSON formatter online kullanım için hazır. Free JSON formatter ile biçimlendirin, doğrulayın, sıkıştırın ve JSON dosyasını indirin.

- Kategori: [Geliştirici Araçları](https://toolbrio.com/kategori/gelistirici/index.md)
- Alt kategori: Kod biçimlendirme
- Son güncelleme: 2026-09-07
- Etkileşimli araç: [https://toolbrio.com/json-formatter/](https://toolbrio.com/json-formatter/)

Tek satıra sıkışmış bir API yanıtında alanları takip etmek, özellikle dizilerin içinde başka nesneler varsa zorlaşır. JSON Formatter, metni girintili satırlara ayırarak hangi değerin hangi alana ait olduğunu görmenizi sağlar. ToolBrio'da iki veya dört boşluklu görünüm oluşturabilir, tek satır çıktı alabilir ve nesne anahtarlarını sıralayabilirsiniz.

Araç, JSON'u önce `JSON.parse` ile okur, sonra `JSON.stringify` ile yeniden üretir. Bu nedenle işlem yalnızca görsel boşluk düzenlemesi değildir: çok büyük sayılar ve yinelenen alan adları çıktıda değişebilir. Kaynak metni saklayarak çalışın; aşağıdaki örnekler hangi durumlarda ayrıca kontrol gerektiğini gösterir.

## Bir API yanıtını okunabilir hale getirin

JSON metnini “JSON girişi” alanına yapıştırın, girinti olarak “2 boşluk” veya “4 boşluk” seçin ve “Biçimlendir” düğmesine basın. Örneğin aşağıdaki sipariş kaydı tek satırda geçerli JSON'dur:

`{"siparisId":"9007199254740993","teslimat":{"sehir":"İzmir","hizli":false},"urunler":[{"kod":"KLM-01","adet":2}]}`

İki boşlukla biçimlendirilmiş çıktıda teslimat bilgisi ayrı bir nesne, ürünler ise bir dizi olarak görünür:

`{
"siparisId": "9007199254740993",
"teslimat": {
"sehir": "İzmir",
"hizli": false
},
"urunler": [
{
"kod": "KLM-01",
"adet": 2
}
]
}`

Bu görünüm, `hizli` alanının teslimat nesnesine, `adet` alanının ise ürün kaydına ait olduğunu takip etmeyi kolaylaştırır. `false` bir mantıksal değerdir; tırnak içindeki sipariş kimliği metindir. Yalnız girintiyi değiştirmek, bir değeri diğer türe çevirmek için kullanılmaz.

## Dört işlem seçeneği ne zaman kullanılır?

- **Biçimlendir:** İç içe yapıyı okumak ve bir hata kaydına anlaşılır örnek eklemek için seçin. Pretty print olarak da adlandırılan bu görünüm, seçtiğiniz iki veya dört boşluklu girintiyi kullanır.
- **Sıkıştır:** Satır araları ve yapısal boşluklar olmadan tek satır JSON üretir. Minify işlemi, metin değerlerinin içindeki boşlukları korur. Örneğin bir metin değerinde art arda yazılmış iki boşluk yerinde kalır. İndirilen dosya yine JSON biçimindedir.
- **Doğrula:** Girdinin JSON sözdizimiyle okunup okunamadığını kontrol eder. Mevcut araçta bu seçenek de girintili çıktı üretir; özgün metni aynen geri veren bir kontrol modu değildir.
- **Anahtarları sırala:** Nesnelerin alan adlarını sıralar ve işlemi içteki nesnelere de uygular. Benzer kayıtları yan yana incelerken alanları bulmayı kolaylaştırır.

Girdi veya girinti değiştiğinde son seçtiğiniz işlem yeniden uygulanır. Çalışmaya başlamak için “Örnek yükle” düğmesini de kullanabilirsiniz. Geçerli sonuç oluştuktan sonra çıktıyı kopyalayın ya da “JSON indir” düğmesiyle `duzenlenmis.json` dosyasını kaydedin. Girdiyi geçersiz hale getirirseniz önceki çıktı temizlenir.

## JSON olarak kabul edilen değerler

[JSON standardı](https://www.rfc-editor.org/rfc/rfc8259) nesne, dizi, metin, sayı, mantıksal değer ve `null` türlerini tanımlar. Dolayısıyla her geçerli JSON'un süslü parantezle başlaması gerekmez. `{}`, `[]`, `"merhaba"`, `42`, `true`, `false` ve `null` ayrı ayrı geçerli girdilerdir. Boş bırakılmış kutu ise `null` değeriyle aynı şey değildir; araç boş girdide işlem sonucu üretmez.

Bir nesnede alan adı ve metin değerleri çift tırnakla yazılır. Alan adıyla değeri iki nokta, alanları birbirinden virgül ayırır. JavaScript dosyasında çalışabilen her ifade JSON biçimine uymaz. Aşağıdaki değişiklikler, sık karşılaşılan sözdizimi sorunlarını giderir:

| Geçersiz girdi |  | Sorun |  | Geçerli örnek |

| `{'ad':'Ece'}` |  | Tek tırnak kullanılmış. |  | `{"ad":"Ece"}` |

| `{ad:"Ece"}` |  | Alan adı tırnaksız. |  | `{"ad":"Ece"}` |

| `{"adet":2,}` |  | Son alandan sonra fazla virgül var. |  | `{"adet":2}` |

| `{"kod":01}` |  | Sayının başında sıfır var. |  | Sayısal değer için `{"kod":1}`; kodun yazımı önemliyse `{"kod":"01"}`. |

| `{"deger":undefined}` |  | `undefined` JSON değeri değil. |  | Alan boş değeri kabul ediyorsa `{"deger":null}`. |

`// yorum` ve `/* yorum */` biçimindeki açıklamalar standart JSON'a ait değildir. `NaN` ve `Infinity` de doğrudan JSON değeri olarak kabul edilmez. Metin içinde satır sonu gerekiyorsa gerçek bir satır kırılması yerine `\n`, tırnak karakteri gerekiyorsa `\"` kaçışını kullanın. [JSON ayrıştırma hataları](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse) için bu sözdizimi ayrıntıları belirleyicidir.

Bir düzeltme yaparken alanın anlamını da koruyun. Örneğin `undefined` yerine her durumda `null` koymak doğru değildir; hedef uygulama alanın hiç gönderilmemesini isteyebilir. Benzer şekilde `"2"` ile `2` farklı türlerdir.

## Hata satırını nasıl yorumlamalısınız?

Geçersiz girdide sonuç alanı tahmini satır ve sütunu gösterir; ilgili satırın metni ayrıca görünür. Bir işlem düğmesine bastığınızda girişteki tahmini konum da seçilir. Önce o konumdaki işareti, ardından önceki alanın sonunu kontrol edin. Eksik virgül çoğu zaman sonraki alan okunurken fark edilir; kapanmamış bir tırnak ise hatanın daha ileride görünmesine yol açabilir.

Konum bilgisi tarayıcının `JSON.parse` hata mesajından çıkarılır. Mesajda kullanılabilir konum yoksa araç metnin sonunu işaretler. Bu nedenle seçilen karakteri otomatik olarak silmek yerine tırnak çiftlerini, parantezleri ve alan ayraçlarını birlikte inceleyin. Bozuk girdiyi düzelttikten sonra sonucu yeniden kontrol edin.

## “Geçerli JSON” sonucu verinin değişmediğini göstermez

### Uzun kimlik numaralarında hassasiyet

JavaScript'in güvenli tamsayı üst sınırı [9007199254740991](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) değeridir. Mutlak değeri bu sınırı aşan tamsayılar tam olarak korunmayabilir. Örneğin `{"id":9007199254740993}` girdisi bu araçta yeniden yazıldığında `{"id":9007199254740992}` olur. Sözdizimi geçerli kaldığı için sonuç yine “Geçerli JSON” görünür.

Hesaplama yapılmayan uzun bir kayıt numarasını `{"id":"9007199254740993"}` şeklinde metin olarak iletmek rakamları korur. Ancak hedef API'nin bu alan için metin kabul etmesi gerekir. Kaynak sistem sayı bekliyorsa, hassasiyeti koruyan bir JSON işleyicisi kullanın. Yuvarlanmış çıktıyı sonradan tırnak içine almak kaybolan rakamı geri getirmez. [JSON.parse açıklaması](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse), sayıların ayrıştırma aşamasında hassasiyet kaybedebileceğini belirtir.

### Sayı yazımı ve çok büyük üsler

Ayrıştırıp yeniden yazma, sayıların gösterimini de sadeleştirir: `1.2300` çıktıda `1.23`, `-0` ise `0` olur. Daha uç bir örnekte `{"deger":1e400}` girdisi `{"deger":null}` çıktısına dönüşür. Bunun nedeni değerin JavaScript sayı aralığını aşması ve [JSON.stringify işleminin sonsuz sayı değerini null olarak yazmasıdır](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Bu örnekte yalnız sayı yazımı değil, veri türü de değişmiştir.

### Yinelenen alan adları

`{"durum":"bekliyor","durum":"tamamlandi"}` girdisinde aynı nesneye iki kez `durum` alanı yazılmıştır. Araç son değeri korur; çıktı yalnız `{"durum":"tamamlandi"}` içerir. İlk değer sonuçtan geri alınamaz. İki farklı durumu tutmak istiyorsanız aynı alanı tekrarlamak yerine veri modeline uygun bir dizi veya ayrı alanlar kullanın.

Bu üç durum Biçimlendir, Sıkıştır, Doğrula ve Anahtarları sırala seçeneklerinin ortak ayrıştırma sürecini ilgilendirir. Araç genel bir hassasiyet ve yinelenen anahtar uyarısı gösterir; her sorunlu değeri ayrı ayrı işaretlemez.

## Anahtar sıralaması ve dizi sırası

Nesne anahtarları sıralanırken dizi elemanlarının yerleri korunur. Örneğin `{"b":2,"a":[3,{"z":1,"m":2}]}` girdisinde dış nesne `a`, `b` sırasına geçer. Dizinin içindeki nesnede de `m`, `z` sırası oluşur. Ancak dizinin ilk elemanı yine `3`, ikinci elemanı yine nesnedir. Böylece bir ürün listesinin kayıt sırası değiştirilmeden alanları düzenlenebilir.

Sıralama Türkçe sözlük sırası kullanmaz; alan adları JavaScript'in [varsayılan metin sıralamasına](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) göre işlenir. Ayrıca `"2"` ve `"10"` gibi dizi indeksi niteliğindeki alan adları, JavaScript nesnesi yazılırken sayısal sırada öne gelir. Bu yüzden `{"10":"on","2":"iki","b":2,"a":1}` örneğinin çıktısındaki anahtar sırası `2, 10, a, b` olur. Bu davranış [nesne anahtarlarının sıralanma kuralıyla](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) ilişkilidir.

## Boyut, anahtar sayısı ve derinlik neyi ölçer?

**Girdi boyutu**, yapıştırdığınız metnin UTF-8 olarak kaç bayt tuttuğudur; indirdiğiniz çıktının boyutu değildir. Örneğin `{"şehir":"İzmir"}` metni 17 karakterden oluşur ve UTF-8'de 19 bayt tutar. Türkçe harfler nedeniyle karakter sayısı ile bayt sayısı aynı çıkmayabilir. Girinti eklemek de çıktının boyutunu ayrıca değiştirir.

**Nesne anahtarı sayısı**, içteki nesneler dahil alan adlarını sayar; dizinin elemanları bu toplama anahtar olarak eklenmez. **Derinlik** hesabında en dış değer sıfırdan başlar ve içeri doğru her değer geçişinde bir artar. Örneğin `{"a":[1,2]}` için bir nesne anahtarı ve iki derinlik gösterilir. Yukarıdaki sipariş örneğinde ise yedi anahtar, üç derinlik ve tek satırlık özgün girdi için 114 bayt bulunur.

Girişin uzunluk sınırı 2.000.000'dur ve JavaScript'in [UTF-16 metin birimi hesabına](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length) dayanır. Çoğu Türkçe karakter bir birim sayılır; bazı Unicode karakterleri iki birim kaplayabilir. Araç ayrıca 256'nın üzerinde derinliği reddeder. 200 KB üzerindeki girdilerde yavaşlama uyarısı gösterir; büyük bir kaydı incelerken, JSON yapısını koruyarak yalnız ilgili bölümü kullanmak çalışmayı kolaylaştırabilir.

## Tarayıcıda ücretsiz kullanım ve çıktı dosyası

ToolBrio'nun JSON biçimlendirme aracı ücretsizdir. Mac veya Windows için ayrı uygulama ya da tarayıcı eklentisi kurmadan, metni giriş alanına yapıştırarak çalışabilirsiniz. İşlem tarayıcıda gerçekleşir; araç bu işlemler için JSON içeriğini sunucuya göndermez. Çıktı JSON olarak kaydedilir; kaynak dosyanızı değiştirmek istiyorsanız indirdiğiniz sürümü kendi çalışma ortamınızda ayrıca kullanmanız gerekir.

Üretim sistemine göndermeden önce verinin beklenen alanları ve türleri taşıdığını da kontrol edin. Örneğin API'nin zorunlu tuttuğu `musteriId` alanı bulunmayan bir nesne sözdizimi açısından geçerli olabilir. [JSON Schema](https://json-schema.org/understanding-json-schema/about), bu tür yapısal kuralları tanımlamak için kullanılır. Buradaki doğrulama JSON sözdizimini denetler; API sözleşmesine veya bir şemaya uygunluğu ayrıca sınamanız gerekir.

## Sık sorulan sorular

### JSON nesnem neden tek satırlık tırnaklı metin olarak kalıyor?

Girdiniz, içinde JSON yazılı bir metin değeri olabilir. Örneğin "{\"a\":1}" geçerli bir JSON metin değeridir; {"a":1} ise nesnedir. Araç tek ayrıştırma uygular ve metnin içini ikinci kez JSON olarak açmaz. Nesneyi incelemek için kaynak uygulamadan nesnenin doğrudan JSON çıktısını alın.

### Her satırında ayrı JSON bulunan bir logu doğrulayabilir miyim?

Ardışık iki nesne, tek bir JSON belgesi değildir. Örneğin {"a":1} ile {"a":2} alt alta yazıldığında bu araç girdiyi reddeder. Böyle bir NDJSON kaydında satırları ayrı inceleyin veya veri akışınız uygunsa kayıtları virgülle ayırıp tek bir diziye dönüştürün.

### Bir .json dosyasını doğrudan yükleyebilir miyim?

Mevcut arayüz metin girişi kullanır. Dosyayı bir metin düzenleyicide açıp içeriğini JSON girişi alanına yapıştırın. Sonucu JSON indir düğmesiyle yeni bir dosya olarak kaydedebilirsiniz.

