Arif

WFN Üye
Konular
756
Mesajlar
756
Çözüm
0
Ticaret Puanı
0
Üyelik
25 Gün
Konum
Bilecik
Web Sitesi
Var
Alanı
SEO Uzmanı
1/1
Konu sahibi
PHP’de JSON verisini okumak için önce JSON metnini bir değişkene alın, ardından json_decode() ile PHP değerine dönüştürün. İkinci parametreyi true verirseniz JSON nesnelerine dizi anahtarlarıyla erişebilirsiniz. Dosyadan okurken dosya hatasını, dönüştürürken de JSON hatasını ayrı ele alın.

JSON dosyasını okuyup değerlerine erişme​


Aşağıdaki örnek PHP 7.3 veya üzerini kullanır. Varsayımsal bir kullanıcı verisi için veri.json adlı dosyayı oluşturup UTF-8 olarak kaydedin:

JSON:
{
  "ad": "Deniz",
  "yas": 28,
  "ilgi_alanlari": ["PHP", "Web"]
}

Aynı klasörde oku.php oluşturun ve aşağıdaki kodu kaydedin. __DIR__, JSON dosyasının PHP dosyasıyla aynı klasörde aranmasını sağlar.

PHP:
<?php
$metin = file_get_contents(__DIR__ . '/veri.json');

if ($metin === false) {
    exit('JSON dosyası okunamadı.');
}

try {
    $veri = json_decode($metin, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    exit('JSON çözümlenemedi.');
}

if (!is_array($veri) || !isset($veri['ad'], $veri['ilgi_alanlari'][0])) {
    exit('Beklenen alanlar bulunamadı.');
}

echo $veri['ad'] . PHP_EOL;
echo $veri['ilgi_alanlari'][0] . PHP_EOL;

Komut satırında dosyaların bulunduğu klasöre gidip php oku.php çalıştırın. Çıktıda ayrı satırlarda Deniz ve PHP görürsünüz. İlk değer nesnenin ad alanından, ikincisi ilgi_alanlari listesinin sıfır numaralı elemanından gelir.

json_decode() içindeki 512 izin verilen iç içe geçme derinliğidir; JSON_THROW_ON_ERROR ise çözümleme başarısız olduğunda yakalanabilen bir hata oluşturur. Başarılı çözümleme, verinin uygulamanızın beklediği alanları veya değerleri taşıdığını garanti etmez. Bu nedenle örnek, kullanacağı alanları ayrıca kontrol eder; gerçek uygulamada alanların türlerini ve izin verilen değerlerini de doğrulayın.

Okuma ve çözümleme hatalarını ayırma​


“JSON dosyası okunamadı” mesajında dosya adını, veri.json dosyasının konumunu ve PHP işleminin okuma iznini kontrol edin. Dosya okunup “JSON çözümlenemedi” mesajı çıkarsa içeriğin UTF-8 olduğunu, anahtarların çift tırnakla yazıldığını ve son elemandan sonra fazladan virgül bulunmadığını kontrol edin.

JSON_THROW_ON_ERROR kullanmayan bir çağrıda null sonucu tek başına hata olduğunu göstermez: JSON içindeki geçerli null değeri de aynı sonucu üretir. Bu yöntemi kullanıyorsanız çağrının hemen ardından json_last_error() ile hata durumunu kontrol edin.

Tanılama yaparken hata ayrıntılarını yalnız güvenli sunucu kayıtlarında inceleyin; JSON içeriğini, parolaları veya erişim anahtarlarını ziyaretçilere göstermeyin. Geçici tanılama çıktısını sorun giderildiğinde kaldırın.

İstek gövdesinden JSON okuma​


Bir istemci JSON’u HTTP isteğinin gövdesinde gönderiyorsa dosya yolu yerine ham gövdeyi okuyun:

PHP:
$metin = file_get_contents('php://input');

Okuma sonucunu false açısından kontrol ettikten sonra aynı json_decode() ve alan doğrulama adımlarını uygulayın. İstemciye JSON gönderdiğini belirtmek için Content-Type: application/json başlığını kullanmasını söyleyin. Gövdenin boş olması veya geçersiz JSON içermesi çözümleme hatasıdır; geçerli JSON gelmesi ise tek başına beklenen alanların bulunduğunu kanıtlamaz.

Sık sorulan sorular​

JSON nesnesini PHP nesnesi olarak nasıl okuyabilirim?​

json_decode($metin) varsayılan olarak JSON nesnelerini PHP nesnelerine dönüştürür; örnekteki ada $veri->ad ile erişebilirsiniz. Hata yönetimi ve alan doğrulaması yine gereklidir.

PHP 7.3 öncesinde hata nasıl kontrol edilir?​

JSON_THROW_ON_ERROR kullanmadan json_decode($metin, true) çağırın. Hemen ardından json_last_error() sonucunu JSON_ERROR_NONE ile karşılaştırın; farklıysa json_last_error_msg() hata açıklamasını verir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic