Как разобрать JSON в PHP от URL

Я новичок в JSON, поэтому я должен задать вам, возможно, очень простые вопросы.
Я пытался искать вокруг, но не нашел ничего, что я мог бы получить на работу.
Я вызвал API и получил данные в формате JSON.
И теперь приходит моя проблема с его анализом через php, он «ничего не найдет». Мой код выглядит так:

$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept: application/vnd.travify.v1+json\r\n")
);

$context = stream_context_create($opts);
$url = 'http://oda.ft.dk/api/Sag?$select=titel,Sagskategori/kategori&$expand=Sagskategori';
$output = file_get_contents($url, false, $context);

$string = file_get_contents($url, false, $context);
$result = json_decode($string, true);

$i = -1;

foreach ($result as $data) {
$i++;
echo "#";
echo $i;
echo "<br>";
echo "<b>Test 1:</b>";
echo "<br>";
if(!empty($result[$i]['value']['Sagskategori']['kategori'])){
echo $result[$i]['value']['Sagskategori']['kategori'];
}else{
echo "Intet fundet.";
}
echo "<hr>";
}

Код JSON можно найти здесь: http://oda.ft.dk/api/Sag?$select=titel,Sagskategori/kategori&$ Расширение = Sagskategori

Может кто-нибудь из вас увидит мою ошибку в коде и поможет мне выбрать правильное направление :-)?

1

Решение

Пожалуйста, замените

foreach ($result as $data) {

от

foreach ($result["value"] as $data) {

Теперь вы можете перебирать массив значений и получать всю информацию из $ data.
Вам не нужно использовать $ i, $ data содержит правильное значение $ result [$ i]

foreach ($result["value"] as $data) {
echo "#";
echo "<br>";
echo "<b>Test 1:</b>";
echo "<br>";
if(!empty($data['Sagskategori']['kategori'])){
echo $data['Sagskategori']['kategori'];
}else{
echo "Intet fundet.";
}
echo "<hr>";
}
1

Другие решения

JSON начинается так:

{
"odata.metadata":"...snip...","value":[
{

Итак, массив внутри value объект.

Правильный код должен быть:

 foreach ($result['value'] as $data) {
// snip
if(!empty($result['value'][$i]['Sagskategori']['kategori'])){
echo $result['value'][$i]['Sagskategori']['kategori'];
}

Кроме того, внутри цикла, $result['value'][$i]['Sagskategori']['kategori']; строго так же, как использование $data['Sagskategori']['kategori'];,

1

По вопросам рекламы [email protected]