如何在PHP中解析JSON对象数组

时间:2015-12-27 14:51:04

标签: php json

我是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 );的代码正在运作。但那段代码错了之后。我试着查看许多教程来找到解决方案,但没有找到任何人。我不知道我错在哪里。

2 个答案:

答案 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.

Run code