No puedo decodificar esta respuesta JSON en PHP usando json_decode , se agradece su ayuda:

Respuesta JSON de API

{
      "fixtures": [
        {
          "id": 59757,
          "home_team_id": 24,
          "away_team_id": 18,
          "home_score_penalties": 0,
          "away_score_penalties": 0,
              "formation": {
               "home": null,
               "away": null
              },
          "date_time_tba": false,
          "spectators": null,
          "round_id": 4839
        }
      ]
    }

Php:

$url = "https://api....";
$data = json_decode(file_get_contents($url), true);
echo $data['fixtures'][0]['home_team_id'];
echo $data['formation'][0]['home'];

¡No obtengo ningún resultado!

Gracias.

-3
Basheer 1 ago. 2016 a las 00:40

2 respuestas

La mejor respuesta

Primero verifique que está recibiendo salida de var_dump(file_get_contents($url)).

Luego verifique que la cadena devuelta sea JSON válido. Explicado aquí por Nordenheim

Una vez que pueda confirmar su validez, inspeccione los datos decodificados JSON para ver cómo acceder al valor correcto.

var_dump(json_decode(file_get_contents($url)));

Así que lo siguiente debería ser lo que buscas;

$data = json_decode(file_get_contents($url)); echo $data['data'][0]['id'];;

2
Community 23 may. 2017 a las 12:22

Hay miriads de validadores JSON por ahí. Use cualquiera de ellos antes de usar json_decode.

{
    "fixtures": [{
        "id": 59757,
        "home_team_id": 24,
        "away_team_id": 18,
        "home_score_penalties": 0,
        "away_score_penalties": 0,
        "formation": {
            "home": null,
            "away": null
        },
        "date_time_tba": false,
        "spectators": null,
        "round_id": 4839,
    }]
}

Tu ejemplo no es JSON válido de ninguna manera, ya que "round_id": 4839, no puede tener una coma al final. El JSON válido sería:

{
    "fixtures": [{
        "id": 59757,
        "home_team_id": 24,
        "away_team_id": 18,
        "home_score_penalties": 0,
        "away_score_penalties": 0,
        "formation": {
            "home": null,
            "away": null
        },
        "date_time_tba": false,
        "spectators": null,
        "round_id": 4839
    }]
}

Ahora, este JSON devuelve una matriz después de decodificarlo:

$json = '{"fixtures": [{"id": 59757,"home_team_id": 24,"away_team_id": 18,"home_score_penalties": 0,"away_score_penalties": 0,"formation": {"home": null,"away": null},"date_time_tba": false,"spectators": null,"round_id": 4839}]}';

var_dump(json_decode($json, true));

Resultado:

array(1) {
  ["fixtures"]=>
  array(1) {
    [0]=>
    array(9) {
      ["id"]=>
      int(59757)
      ["home_team_id"]=>
      int(24)
      ["away_team_id"]=>
      int(18)
      ["home_score_penalties"]=>
      int(0)
      ["away_score_penalties"]=>
      int(0)
      ["formation"]=>
      array(2) {
        ["home"]=>
        NULL
        ["away"]=>
        NULL
      }
      ["date_time_tba"]=>
      bool(false)
      ["spectators"]=>
      NULL
      ["round_id"]=>
      int(4839)
    }
  }
}
3
Alex Karshin 31 jul. 2016 a las 22:46