我是php编程的新手。在我的项目中,我试图解析来自php web服务的JSON数据。这是Web服务中的代码。
$query = "select * from tableA where ID = 1";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$arr= array();
while ($row = mysql_fetch_assoc($result)) {
$arr['articles'][] = $row;
}
header('Content-type: application/json');
echo json_encode($arr);
}
else{
echo "No Names";
}
这是以JSON格式提供给我的数据。
{"articles":[{"ID":"1","Title":"Welcome","Content":"This is the first article."}]}
现在这是我的php页面代码。
<?php
$jfile = file_get_contents('http://localhost/api/get_content.php');
$final_res = json_decode($jfile, true) ;
var_dump( $final_res );
$content = $final_res->articles->Content;
?>
我想在网页上显示内容。
我知道var_dump( $final_res );
的代码正在运作。但那段代码错了之后。我试着查看许多教程来找到解决方案,但没有找到任何人。我不知道我错在哪里。
答案 0 :(得分:6)
json_decode
的第二个参数确定是将结果作为数组而不是对象返回。由于您将其设置为true,因此结果是数组而不是对象。
$content = $final_res['articles'][0]['Content'];
答案 1 :(得分:2)
作为替代答案,如果您想将其用作对象,请使用以下代码:
$a = '{"articles":[{"ID":"1","Title":"Welcome","Content":"This is the first article."}]}';
$final_res = json_decode($a);
echo '<pre>';
print_r($final_res);
echo '</pre><br>';
请注意,我从json_decode 中删除了第二部分(true) 输出:
stdClass Object ( [articles] => Array ( [0] => stdClass Object ( [ID] => 1 [Title] => Welcome [Content] => This is the first article. ) ) )
访问Content
:
echo 'Content: ' . $final_res->articles[0]->Content;
输出:
Content: This is the first article.