JSON'dan Veritabanına Kayıt
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 ?
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ş.";