Как правильно парсить JSON в PHP

#php #json #api

#php #json #API

Вопрос:

Я хочу проанализировать значения из Json API, но я не могу заставить это работать

API возвращает этот JSON:

 [
  {
    "assets": [
      {
        "id": 6,
        "size": 1429504,
        "download_count": 1,
        "browser_download_url": "https://dl.domain.tld/files/cdbc6e19-cd86-4ed6-8897-37ec5aaee578"
      }
    ]
  }
]
  

Я попытался получить значение ID следующим образом:

 $json_obj = json_decode($resp);
print $json_obj->assets[0]->id;
  

но я не получаю результата, тогда как он должен быть 6. Что я здесь делаю не так?

Ответ №1:

Помните, что внешняя часть JSON — это массив, как указано во вступлении [ . Итак, вам нужно сначала получить доступ к первому (и единственному) его элементу:

 $json_obj[0]->assets[0]->id; //<-- note the first [0]
  

Ответ №2:

Я думаю, что правильный ответ

 $json_obj = json_decode($resp);
print $json_obj[0]->assets[0]->id;
  

Объект json будет преобразован в массив php, поскольку у вас есть массив с объектом внутри, в вашем случае это будет многомерный массив с объектами внутри.

Ответ №3:

Попробуйте, у меня это сработало..

 $json ='[
  {
    "assets": [
      {
        "id": 6,
        "size": 1429504,
        "download_count": 1,
        "browser_download_url": "https://dl.domain.tld/files/cdbc6e19-cd86-4ed6-8897-37ec5aaee578"
      }
    ]
  }
]';



$json_obj = json_decode($json);

var_dump($json_obj[0]->assets[0]->id)
?>
  

Ответ №4:

декодируйте JSON в массив и извлекайте идентификатор с помощью соответствующих ключей массива

 $jToArray = json_decode($resp, TRUE);
echo $jToArray[0]['assets'][0]['id'];//You will get the correct id