Cum face extractie de date dintr-un json in php

Salut, am o mica problema…
Interoghez un API … imi genereaza un json …

$mydata1='json sadadsad asd ada das das dasdasd asd asdas das d'; 
$mydata = file_get_contents("http://localhost/json.php");
$obj = json_decode($mydata,true);

foreach($obj['data'][0]['events'] as $data) {

}

Daca folosesc $mydata1 functioneaza perfect , daca folosec $mydata nu functioneaza :frowning: de ce ?

1 Like

Hai mă, un minimum de efort depui și tu? …

  1. scrie ceva în logs? (presupunând că ai error_reporting setat pe E_ALL)
  2. $mydata conține ceva?
  3. json_last_error_msg ce zice?
2 Likes

Am incercat orice , crede-ma…nu imi da nimic…

var_dump($obj); daca pun asta apare null :frowning:

NULL
**Notice** : Trying to access array offset on value of type null in **/Applications/AMPPS/www/verify.php** on line **8**

**Notice** : Trying to access array offset on value of type null in **/Applications/AMPPS/www/verify.php** on line **8**

**Notice** : Trying to access array offset on value of type null in **/Applications/AMPPS/www/verify.php** on line **8**

**Warning** : Invalid argument supplied for foreach() in **/Applications/AMPPS/www/verify.php** on line **8**

Păi hai să o gândim așa… băbește, că judecând după discuțiile deschise de tine, aici ai probleme de fapt.

Trying to access array offset on value of type null in

Ce înseamnă asta? Că rezultatul de la json_decode este null. Când rezultatul este null? Uite ce zice la manual:

null is returned if the json cannot be decoded or if the encoded data is deeper than the nesting limit.

Deci ceva se întâmplă la decodare. Poate JSON-nul nu e valid? Căutăm un linter online, JSON-ul e bun.

Înseamnă că problema e la codul nostru. La json_decode am stabilit că nu are cum să fie, deci cel mai probabil buba este ceva mai sus. Folosim json_last_error_msg, să vedem ce eroare dă.

Nu dă eroare? Repeți procesul ăsta la linia de mai sus: vezi ce returnează, cauți în manual, cauți în logs etc.


image

2 Likes

Pai unde e eroare …daca dau copy paste la file_get_contents(“/json.php”); in $json=‘’; totul functioneaza perfect…

i-am dat cu json_last_error_msg zice eroare de sintaxa…

wtf, reclame in reposnse? :slight_smile:

$ curl -sk  https://tvonline.biz/json.php|jq '.beGambleAware'
{
  "begambleaware1": "Aplicația conține informații despre cote. Apelăm la",
  "begambleaware2": "pariuri responsabile și rezonabile.",
  "begambleawareUrl": "https://www.begambleaware.org/"
}

As sugera sa dai un vardump la $mydata si vezi cum arata.

Vesi cum arata apoi resultatul cu json_decode si uite-te pe structura lui cum ajungi la ceea ce te intereseaza.

Fa le pasi ca asa nu o sa intelegi nimic si o sa te incurci.
Ca poate
$obj[‘data’][0][‘events’] chiar este null

Poti sa pui si json ul ala intr-un linter sa vezi daca este valid.

1 Like

Am zis ca inclusiv json_decode este nu-l nu doar $obj

Este un Api dintr-o aplicație de telefon ! De aceea sunt reclame

Din ce mi-am dat seama pana acum este ca atunci când fac copy paste funcționează pentru ca diacriticile sunt înlocuite automat de browser in ă î etc ! Când fac direct File get in Echo mi le arată ca #a52733 exemplu aici bănuiesc ca e buba …
Am tot căutat rezolvare și nimic …

function removeBOM($data) {
    if (0 === strpos(bin2hex($data), 'efbbbf')) {
       return substr($data, 3);
    }
    return $data;
}
$obj=json_decode(removeBOM($mydata),true);