如何从url解析php中的json
我是json新手,所以我要问你一个可能非常简单的问题。 我试着四处寻找,但没有找到任何我能找到的工作。 我调用了一个API并接收了json格式的数据。 现在我的问题来了,通过我的php解析它,它将找不到任何东西。 我的代码如下所示:如何从url解析php中的json,php,json,api,parsing,decode,Php,Json,Api,Parsing,Decode,我是json新手,所以我要问你一个可能非常简单的问题。 我试着四处寻找,但没有找到任何我能找到的工作。 我调用了一个API并接收了json格式的数据。 现在我的问题来了,通过我的php解析它,它将找不到任何东西。 我的代码如下所示: $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept: application/vnd.travify.v1+json\r\n" ) );
$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>";
}
{
"odata.metadata":"...snip...","value":[
{
json代码可以在这里找到:
你们中的任何人都能看到我在代码中的失败,并让我走上正确的道路吗:-?JSON的开头是这样的:
$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>";
}
{
"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]['sagsategori']['kategori'];与使用$data['sagsategori']['kategori']完全相同 请更换
foreach ($result 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>";
}
快速补充说明-您将$i初始化为-1,然后将其递增,因为您的foreach中第一件要做的事情是0?这部分是合乎逻辑的。为什么不将其初始化为0,然后作为foreach中的最后一个操作递增?在执行foreach循环之前,请尝试执行var_dump$result或print_r$result,以查看结果变量的外观。我首先要检查的主要问题是,你得到的是一个迭代对象。我认为,你只需要返回一个对象,所以你的整个循环想法可能不是正确的方法。JSON中的第一个值不是数组。编辑我已经看到了一些关于这些问题的答案。投票支持那些人非常感谢:-!这是一个很大的帮助!谢谢你拯救了我的一天:-