我是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
你们中的任何人都可以在代码中看到我的失败,并以正确的方式让我:-)?
答案 0 :(得分:1)
JSON的开头是这样的:
{
"odata.metadata":"...snip...","value":[
{
因此数组在<{1}}对象中。
正确的代码应该是:
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'];
完全相同。
答案 1 :(得分: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>";
}