使用PHP将XML格式化为JSON
我试图从XML提要的属性获取JSON提要输出。我可以从XML中获取数据,但是,我无法将其正确格式化。错误似乎与使用PHP将XML格式化为JSON,php,xml,json,Php,Xml,Json,我试图从XML提要的属性获取JSON提要输出。我可以从XML中获取数据,但是,我无法将其正确格式化。错误似乎与json_encode没有向输出日期添加大括号有关。这是我目前掌握的代码: <?php $url = 'http://cloud.tfl.gov.uk/TrackerNet/LineStatus'; if(!$xml = simplexml_load_file($url)) { die("No xml for you"); }
json_encode
没有向输出日期添加大括号有关。这是我目前掌握的代码:
<?php
$url = 'http://cloud.tfl.gov.uk/TrackerNet/LineStatus';
if(!$xml = simplexml_load_file($url))
{
die("No xml for you");
}
$linestatus = array();
foreach ($xml->LineStatus as $line)
{
echo $line->Line['Name'];
echo $line->Status['Description'];
}
header('Content-Type: application/json');
print_r(json_encode($linestatus));
?>
LineStatus作为$line)
{
echo$line->line['Name'];
echo$行->状态['Description'];
}
标题('Content-Type:application/json');
打印(json编码($linestatus));
?>
回声
s把一切都搞砸了。我认为您打算附加到linestatus
,它根据您的代码保持为空
$linestatus[] = array(
"name" => $line->Line['Name'],
"description" => $line->Status['Description']
);
您还需要使用echo
而不是print\r
来实际发出JSON。您将$linestatus
声明为一个数组,然后在最终编码并尝试输出它之前,不要在其中放入任何内容。当然,它不会像预期的那样工作!相反,您应该使用以下值填充它:
$linestatus = array();
foreach ($xml->LineStatus as $line)
{
$linestatus[] = $line->Line;
}
header('Content-Type: application/json');
print_r(json_encode($linestatus));
问题是您没有将名称和描述存储到数组中
试试这个:
foreach ($xml->LineStatus as $line)
{
$linestatus[] = array('name' => $line->Line['Name']);
$linestatus[] = array('description' => $line->Line['Description']);
}
试试这个:不要对JSON字符串使用print\r()
;普通的旧打印
或echo
是您所需要的。此外,我没有看到您的代码在任何地方实际使用$linestatus
。也许您想在foreach()
循环中使用它?这样会分割行数据,而不是将行数据分组。@cillosis:请参阅演示。:)我很确定名字和描述是相关联的。这意味着它们一起组成了一行,因此应该用$linestatus[]=$line->line
语句组合在一起。这是最接近我想要实现的。但是,当我想调用输出的JSON时,例如,当我尝试使用JQuery“value.name”进行访问时,我会变得未定义。我还注意到,它输出的JSON的站名标识符为“0”,有办法停止吗?