JSON Nasıl Doğrulanır: Tam Kılavuz ve Örnekler
JSON (JavaScript Object Notation), modern web API'lerinin, yapılandırma dosyalarının ve veri alışverişinin temel taşıdır. Ancak geçersiz JSON, uygulama çökmelerine, API entegrasyon hatalarına ve saatlerce hata ayıklama sıkıntısına yol açar. Bu kılavuz, temel sözdizimi kontrolünden gerçek örneklerle gelişmiş Schema doğrulamasına kadar JSON'ı doğrulamak için bilmeniz gereken her şeyi size gösterecektir.
JSON Doğrulaması Neden Önemlidir
Geçersiz JSON, web uygulamalarındaki en yaygın hata kaynaklarından biridir. Yanlış yerleştirilmiş bir virgül, tırnaksız bir anahtar veya sondaki bir virgül, JSON.parse()'ın SyntaxError fırlatmasına neden olarak tüm veri ardışık düzenini çökertebilir. Doğrulama, bu hataları sisteme yayılmadan ve alt akış arızalarına neden olmadan önce yakalar.
Sözdizimi doğruluğunun ötesinde, doğrulama JSON verilerinin beklenen yapıya uygun olmasını sağlar. Bir API geçerli JSON döndürebilir ancak zorunlu alanlar eksik, veri türleri yanlış veya değerler kabul edilebilir aralığın dışında olabilir. Schema doğrulaması bu yapısal sorunları ele alır.
JSON Sözdizimi Kuralları
Doğrulama araçlarına dalmadan önce, JSON'ı geçerli kılan kuralları anlamak çok önemlidir. JSON, RFC 8259 tarafından tanımlanan katı bir sözdizimine sahiptir ve tek bir karakter ihlali bile tüm belgeyi geçersiz kılar.
Dizeler Çift Tırnak Kullanmalıdır
Tüm dize değerleri ve nesne anahtarları çift tırnak içine alınmalıdır. Tek tırnak geçerli bir JSON dize sınırlayıcısı değildir, bu JavaScript'ten gelen geliştiricilerin yaygın bir hatasıdır.
// Invalid - single quotes
{'name': 'Alice', 'age': 30}
// Valid - double quotes
{"name": "Alice", "age": 30}Nesne Anahtarları Tırnak İçinde Olmalıdır
JavaScript nesne literallerinden farklı olarak, JSON tüm nesne anahtarlarının çift tırnak içine alınmasını gerektirir. Tırnaksız anahtarlar sözdizimi hatasıdır.
// Invalid - unquoted keys
{name: "Alice", age: 30}
// Valid - quoted keys
{"name": "Alice", "age": 30}Sondaki Virgüle İzin Verilmez
JSON, bir nesne veya dizinin son öğesinden sonra virgüle izin vermez. Bu, özellikle JSON'ı manuel olarak düzenlerken başka bir yaygın hatadır.
// Invalid - trailing comma
{
"name": "Alice",
"age": 30,
}
// Valid - no trailing comma
{
"name": "Alice",
"age": 30
}Yorumlar Desteklenmez
JSON yorumları desteklemez. // tek satırlı yorumlar ve /* */ çok satırlı yorumlar JSON'da geçersizdir. Belgeleme gerekiyorsa, ayrı dosyalar veya JSONC gibi formatlar kullanın.
Yaygın JSON Doğrulama Hataları
En yaygın hataları anlamak, onları hızlıca tespit edip düzeltmenize yardımcı olur. İşte en sık karşılaşacağınız hatalar:
- Beklenmeyen token: Genellikle tek tırnak, tırnaksız anahtarlar veya sondaki virgülden kaynaklanır. Hata mesajı ayrıştırmanın başarısız olduğu konumu içerir.
- JSON girdisinin beklenmeyen sonu: JSON dizesi eksik veya boş. Bu genellikle bir ağ isteği boş yanıt döndürdüğünde olur.
- Beklenmeyen boşluk olmayan karakter: Ana JSON değerinden sonra ek içerik, örneğin bir dizide sarılmamış ikinci bir nesne.
- Geçersiz sayı: Başında sıfır olan sayılar (0'ın kendisi hariç), onaltılık gösterim veya NaN / Infinity değerleri geçerli JSON değildir.
JavaScript'te JSON Doğrulama
JavaScript'te JSON'ı doğrulamanın en basit yolu, JSON.parse()'ı try-catch bloğuna sarmaktır. JSON geçersizse, yöntem SyntaxError fırlatır.
function validateJSON(jsonString) {
try {
JSON.parse(jsonString);
return { valid: true };
} catch (error) {
return {
valid: false,
error: error.message
};
}
}
const result = validateJSON('{"name": "Alice"}');
console.log(result);
// { valid: true }
const badResult = validateJSON("{'name': 'Alice'}");
console.log(badResult);
// { valid: false, error: "Unexpected token '..." }Python'da JSON Doğrulama
Python, JSON dizelerini ayrıştırmak için json.loads() içeren json modülünü sağlar. JavaScript'e benzer şekilde, geçersiz JSON ayrıntılı konum bilgisiyle json.JSONDecodeError hatasına neden olur.
import json
def validate_json(json_string):
try:
json.loads(json_string)
return {"valid": True}
except json.JSONDecodeError as e:
return {
"valid": False,
"error": str(e),
"line": e.lineno,
"column": e.colno
}
result = validate_json('{"name": "Alice"}')
print(result)
# {'valid': True}JSON Schema Doğrulaması
Sözdizimi doğrulaması yalnızca JSON'ın iyi biçimlendirilmiş olup olmadığını söyler. JSON Schema, beklenen yapıyı tanımlamanıza ve verileri buna göre doğrulamanıza olanak tanır. Schema, zorunlu alanları, veri türlerini, değer aralıklarını, dize desenlerini ve iç içe nesne yapılarını belirtir.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["name", "email"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0 }
}
}Popüler JSON Schema doğrulayıcıları arasında JavaScript için Ajv, Python için jsonschema ve Java için json-schema-validator bulunur. Bu kütüphaneler, JSON verilerini Schema'nıza göre doğrular ve her ihlal için ayrıntılı hata mesajları üretir.
Çevrimiçi JSON Doğrulama Araçları
Kod yazmadan bir JSON belgesini hızlıca kontrol etmeniz gerektiğinde, çevrimiçi doğrulayıcılar en hızlı seçenektir. Hata vurgulama ve satır numaralarıyla anında geri bildirim sağlarlar.
JSON Doğrulama En İyi Uygulamaları
- Erken doğrulayın: JSON'ı sistem sınırlarında (API uç noktaları ve dosya içe aktarma fonksiyonları gibi), veriler iş mantığına girmeden önce kontrol edin.
- Schema doğrulaması kullanın: Sözdiziminin ötesinde, eksik alanları, yanlış türleri ve aralık dışı değerleri yakalamak için JSON Schema ile veri yapısını doğrulayın.
- Net hata mesajları sağlayın: Doğrulama başarısız olduğunda, kullanıcıların sorunu hızlıca düzeltmesine yardımcı olmak için alan yolunu, beklenen türü ve gerçek değeri ekleyin.
- Hem istemci hem sunucu tarafında doğrulayın: İstemci tarafı doğrulaması anında geri bildirim sağlarken, sunucu tarafı doğrulaması güvenlik ve veri bütünlüğünü sağlar.
- CI/CD'de doğrulamayı otomatikleştirin: Derleme ardışık düzeninde JSON fixture'larını ve yapılandırma dosyalarını doğrulamak için ajv-cli veya jsonschema gibi araçları kullanın.
- Doğrulama hatalarını günlüğe kaydedin: Desenleri tanımlamak ve veri üreticilerindeki kök nedenleri düzeltmek için bağlamla birlikte doğrulama başarısızlıklarını kaydedin.
JSON verilerinizi doğrulamaya hazır mısınız? Anında hata tespiti ve ayrıntılı geri bildirim sunan ücretsiz çevrimiçi JSON doğrulayıcımızı deneyin.
JSON'ı Şimdi DoğrulaSıkça Sorulan Sorular
JSON doğrulaması nedir?
JSON doğrulaması, bir JSON belgesinin doğru sözdizimi kurallarına ve isteğe bağlı olarak tanımlanmış bir Schema'ya uygun olup olmadığını kontrol etme sürecidir. Sözdizimi doğrulaması JSON'ın iyi biçimlendirilmiş olmasını sağlarken, Schema doğrulaması veri yapısının beklenen türler, zorunlu alanlar ve değer kısıtlamalarıyla eşleşmesini sağlar.
En yaygın JSON hataları nelerdir?
En yaygın JSON hataları şunlardır: son öğeden sonra sondaki virgül, çift tırnak yerine tek tırnak kullanma, tırnaksız nesne anahtarları, yorumlar (JSON'da izin verilmez) ve undefined veya NaN değerleri. Bu hatalar JSON.parse()'ın SyntaxError fırlatmasına neden olur.
JavaScript'te JSON nasıl doğrulanır?
JSON.parse()'ı try-catch bloğuna sararak kullanın. JSON geçersizse, JSON.parse() yakalayıp işleyebileceğiniz bir SyntaxError fırlatır. Schema doğrulaması için, JSON Schema doğrulamasını uygulayan Ajv gibi kütüphaneleri kullanın.
JSON Schema nedir?
JSON Schema, JSON belgelerini açıklamanıza ve doğrulamanıza olanak tanıyan bir kelime dağarcığıdır. Beklenen yapıyı, türleri, zorunlu alanları, değer aralıklarını, dize desenlerini ve iç içe nesne yapılarını tanımlar. Temel sözdizimi doğruluğunun ötesinde JSON verilerinin belirli bir formata uygun olup olmadığını doğrulamak için kullanabilirsiniz.
JSON çevrimiçi doğrulanabilir mi?
Evet, ToolHub JSON Doğrulayıcı gibi çevrimiçi JSON doğrulama araçları, JSON verilerinizi yapıştırmanıza ve hatanın tam olarak hangi satır ve sütunda oluştuğunu gösteren ayrıntılı hata mesajlarıyla hemen geçerli olup olmadığını görmenize olanak tanır.