无法用php中的json_decode()解析json节点

时间:2014-12-04 12:11:25

标签: php json parsing

这里是我试图用json_decode()函数解析的变量中的json字符串。我试图用它检索一个特定的节点信息,但它显示我空白的白页。想尝试使用file_get_contents()来从外部文件中获取json字符串。 我已经看到了之前问题的答案,但这对我没有帮助

<?php
//$json = file_get_contents('jsonfile.json');
$json = '[
{
    "selfie": {
        "post_author": "2",
        "post_date": "2014-12-02 13:00:00",
        "post_date_gmt": "2014-12-02 13:00:00",
        "post_content": "this is an example content",
        "image": "http://ssomesite.com/webservice/uploads/support.jpg",
        "post_title": "TestJSON"
    }
}
]';
$result = json_decode ($json);
echo $result->selfie->post_date;
//echo $result->selfie;
?>

7 个答案:

答案 0 :(得分:3)

echo $result[0]->selfie->post_date;

答案 1 :(得分:2)

您的对象路径错误。它应该是

echo $result[0]->selfie->post_date;

...因为JSON以一个数组开头,你的自拍定义在第一个元素中,因此[0]

答案 2 :(得分:1)

您的JSON格式定义了一个包含单个对象的数组,其中包含一个名为selfie的属性,您需要像这样访问数据:

echo $result[0]->selfie->post_date;

如果无法解析JSON字符串,最好的办法是检查json_last_errorjson_last_error_msg告诉您哪些内容出错了。

答案 3 :(得分:1)

我认为你错过了那个父数组。您还需要考虑该数组:

<?php
$json = '[
{
    "selfie": {
        "post_author": "2",
        "post_date": "2014-12-02 13:00:00",
        "post_date_gmt": "2014-12-02 13:00:00",
        "post_content": "this is an example content",
        "image": "http://ssomesite.com/webservice/uploads/support.jpg",
        "post_title": "TestJSON"
    }
}
]';
$result = json_decode ($json);
print($result[0]->selfie->post_date);
?>

Demo

答案 4 :(得分:0)

那是一个数组对象。而不是使用$result->selfie->post_date。使用:

var_dump($result[0]->selfie->post_date);

答案 5 :(得分:0)

<?php
//$json = file_get_contents('jsonfile.json');
$json = '[
{
    "selfie": {
        "post_author": "2",
        "post_date": "2014-12-02 13:00:00",
        "post_date_gmt": "2014-12-02 13:00:00",
        "post_content": "this is an example content",
        "image": "http://ssomesite.com/webservice/uploads/support.jpg",
        "post_title": "TestJSON"
    }
}
]';
$result = json_decode ($json,true);
$rs = (array)$result;
echo '<pre>';
print_r($rs);
die;
?>

Array
(
    [0] => Array
        (
            [selfie] => Array
                (
                    [post_author] => 2
                    [post_date] => 2014-12-02 13:00:00
                    [post_date_gmt] => 2014-12-02 13:00:00
                    [post_content] => this is an example content
                    [image] => http://ssomesite.com/webservice/uploads/support.jpg
                    [post_title] => TestJSON
                )

        )

)

答案 6 :(得分:0)

经过大量研究后我发现file_get_contents()实际上是从文件中获取数据,但由于它的编码,它在json之前有一些垃圾字符,如此

所以为此,我将编码更改为utf8(BOM或没有BOM),现在工作正常。

同一个文件中的json字符串的

已经被@ rut2和其他开发人员回答了。我感谢他们努力解决我的问题。