解码对象内部对象内部的json对象

时间:2018-11-23 12:11:07

标签: php json

我正在尝试使用json_decode()解码json文件,并在从true获得的json字符串之后添加第二个参数file_get_contents()。如下所示。

json_decode(file_get_contents($dir), true);

我已经确保文件中的目录正确并且存储在$dir下方的json文件中。

{
"must": {
    "title": {
        "tag": "<!--section title-->",
        "content": null,
        "with-content": true
    },
    "class": {
        "tag": "<!--section class-->",
        "content": null,
        "with-content": true
    }
}

但是当我尝试使用下面的脚本来获取json文件时。

if(is_file_ready($dir)) {
    $set = json_decode(file_get_contents($dir), true);
    echo file_get_contents($dir);   

    if(isset($set['must'])) {
        foreach($set['must'] as $node) {
        echo $node['tag'];
    }
}

仅显示第一个echo,如下所示,echo $node['tag']则什么也不显示。

  

{“必须”:{“标题”:{“标签”:“”,“内容”:空,“有内容”:true},“类别”:{“标签”:“”,“内容“:null,”含内容“:true}}}

当我将echo $node['tag']更改为print_r($node['tag'])时,它显示如下。

  

Array([tag] => [content] => [with-content] => 1)Array([tag] => [content] => [with-content] => 1)

我的问题是,为什么tag返回null,内容也是如此? <!-- -->被读为与json相同的html上的注释吗?还是我做错了什么?

谢谢您的修改。

1 个答案:

答案 0 :(得分:1)

您的代码可以正常工作。您只需尝试在浏览器中运行它。如果打开开发工具(f12),您会在html中看到这些值显示为注释,因此看不到它们。

如果使用邮差运行脚本,则会看到输出正常打印。

enter image description here