v2.5.2
Giriş yap

JSON'dan Veritabanına Kayıt

mcfearcombat
447 defa görüntülendi

Merhaba,

cURL ile çektiğim bir json verisi mevcut bunu json_decode komutu ile çözümleyip okuyabiliyorum. Bu dosyanın içerisinde birçok veri mevcut ve ben bazılarını veritabanına kaydetmek istiyorum. Burada json'ı hiç decode etmeden mi okuma yöntemi uygulanır, yoksa decode ettikten sonra nasıl bir proses izlemem lazım fikir verebilirmisiniz ?

ebykdrms
725 gün önce

print_r() ile echo farklı şekilde çalışıyorlar. echo komutu karşısındaki ifadenin bir string olduğunu varsayar. Siz echo $cikti_json; komutunu verdiğinizde echo'ya bir string değil bir array veriyorsunuz.
print_r() fonksiyonu içeriğindeki yapıya göre kendince bir formatta çıktı üretir.
Aslında echo'nun amacı gerçekten ekrana bi'şeyler yazdırmakken print_r()'nin amacı programcıya bir değerin değerini göstermektir. İkisinin hedef kitlesi farklı.
Kısacası, bir PHP array'ını echo ile ekrana yazdıramazsınız. Size array'ın içeriğini yazmak yerine sadece "Array" yazar.
Siz eğer $cikti_json değişkeninizdeki değerleri yazdırmak istiyorsanız onlara ayrı ayrı ulaşıp echo komutunu kullanmalısınız.
Örneğin şöyle bir json veriniz var diyelim:

[
    { "ad": "B. Kağan", "soyad": "ATAGÜN" },
    { "ad": "Tayfun", "soyad": "ERBİLEN" } 
]

Siz bu değeri json_decode() fonksiyonuyla $cikti_json değişkenine aldınız:

$cikti_json=json_decode('[{ "ad": "B. Kağan", "soyad": "ATAGÜN" }, { "ad": "Tayfun", "soyad": "ERBİLEN" }]');

Şu şekilde, dizinizdeki kişilerin ad-soyad bilgilerini ekrana yazdırabilirsiniz:

for($i = 0; $i < count($cikti_json); $i++) {
    echo "<div><strong>Ad:</strong> {$cikti_json[$i]->ad} - <strong>Soyad:</strong> {$cikti_json[$i]->soyad}</div>;
}

foreach ile yapmak için:

foreach($cikti_json as $item) {
    echo "<div><strong>Ad:</strong> {$item->ad} - <strong>Soyad:</strong> {$item->soyad}</div>;
}

NOT: json_decode() komutu json içindeki array'ları kendi Array'ına, object'leri de kendi stdClass'ına çeviriyor'ına çeviriyor. stdClass içeriğine erişmek için dizilerdeki gibi [ ] içine key yazmak yerine -> ifadesinden sonra key yazmak gerekiyor.

Başka bir örnek vereyim. Bu sefer json bir dizi değil sadece object olsun.

$cikti_json=json_decode('{ "customer": "Emre", "shipmentAddress": "Samsun" }');
echo "Müşteri {$cikti_json->customer} için teslimat adresi {$cikti_json->shipmentAddress} olarak belirtilmiş.";