v2.5.2
Giriş yap

jsondan gelen datayı parçalamak

szrcmk
2,211 defa görüntülendi ve 2 kişi tarafından değerlendirildi

Merhabalar,

Aşağıdaki şekilde verilerimi alıyorum.

$Object = json_decode($Response->Data);
return $Object;

Tarayıcıya girdiğimde aşağıdaki gibi sonuç dönüyor, fakat ben buradan mesala sadece destination değerleri alıp veritabanına ekletmek istiyorum. Bu dönen sonuçta ki verileri parçalayıp istediğim verileri alamadım bir türlü

"Status": true,
"Data": [
{
"uniqueid": "1573421921.95355",
"values": [
{
"date": "11.11.2019 00:38:41",
"destination": "123456789",
"source": "123456789",
"duration": "00:00:00",
"direction": 3,
"recording": "",
"line": "123456789",
"directory": "\"123456789\" <123456789>"
}
]
},
...
Cevap yaz
Cevaplar (3)
tayfunerbilen
1617 gün önce

Senin tam json formatını bilemiyorum ancak şu formatta olduğunda düzgün alıyorum, kodu direk çalıştırıp test edebilirsin;

<?php

$json = '{
  "Status": true,
  "Data": [
    {
      "uniqueid": "1573421921.95355",
      "values": [
        {
          "date": "11.11.2019 00:38:41",
          "destination": "123456789",
          "source": "123456789",
          "duration": "00:00:00",
          "direction": 3,
          "recording": "",
          "line": "123456789",
          "directory": "\"123456789\" <123456789>"
        }
      ]
    }
  ]
}';

$data = json_decode($json);
echo $data->Data{0}->values{0}->destination;

?>
szrcmk
1617 gün önce

Maalesef tayfun bu şekilde de alamadım. Almış olduğum hata şu şekilde;

SyntaxError: Unexpected token < in JSON at position 0
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/crm/Classes/Dashboard.class.php</b> on line <b>185</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/crm/Classes/Dashboard.class.php</b> on line <b>185</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/crm/Classes/Dashboard.class.php</b> on line <b>185</b><br />
{
"Status": true,
"Data": null
}

Kodum ise şu şekilde;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_URL,"https://siteismi.com/report");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $Response = new stdClass();
        $Response->Data = curl_exec ($ch);
        //curl_close ($ch);
        if (curl_errno($ch)) {
            echo "Hata :";
            print curl_error($ch);
        } else {
            curl_close($ch);
        }

        $Object = json_decode($Response->Data);
        return $Object->Data[0]->values[0]->destination;
tayfunerbilen
1617 gün önce

json_decode() fonksiyonu iki parametre alır ancak sadece ilki zorunludur. İlki zaten json değeri, ikinci parametre true verilir ise array olarak, verilmez ise obje olarak değerleri alırsın. Örnek vermek gerekirse;

<?php

$json = '{"name": "Tayfun", "surname": "Erbilen"}';

$data = json_decode($json);
echo $data->name . ' '  . $data->surname;

$dataArray = json_decode($json, true);
echo $dataArray['name'] . ' ' . $dataArray['surname'];

Senin örneğinde ise obje olduğu için destination değerini şöyle alabilirsin;

$Object = json_decode($Response->Data);
echo $Object->Data{0}->values{0}->destination;