【发布时间】:2015-01-05 16:43:08
【问题描述】:
我是 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&$expand=Sagskategori
你们中的任何人都可以看到我在代码中的失败,并让我走上正确的道路:-) 吗?
【问题讨论】:
-
快速旁注-您将
$i初始化为-1,然后将其作为foreach中的第一件事进行递增,以使0?这是部分合乎逻辑的。为什么不将其初始化为0,然后作为foreach中的最后一个操作递增? -
在执行
foreach()循环之前尝试执行var_dump($result)或print_r($result)以查看结果变量的样子。我首先要检查的主要内容是您要返回一个迭代对象。我认为,您只会取回一个对象,因此您的整个循环想法可能不是正确的方法。 JSON 中的第一个值不是数组。 edit 我已经看到了一些类似的答案。为那些点赞。 :)
标签: php json api parsing decode