Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从json访问数据_Javascript_Html_Json - Fatal编程技术网

Javascript 无法从json访问数据

Javascript 无法从json访问数据,javascript,html,json,Javascript,Html,Json,我在JSON方面遇到了问题。我用PHP做了这个,我将它发送到我的JavaScript,但是我无法获得值 [ { "book":[ { "dir":"extract\/pg1065.epub" }, { "dir":"extract\/pg1065.epub\/1065\/0.css" }, { "dir":"extra

我在JSON方面遇到了问题。我用PHP做了这个,我将它发送到我的JavaScript,但是我无法获得值

[
   {
      "book":[
         {
            "dir":"extract\/pg1065.epub"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/0.css"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/1.css"
         },
   }

   {
      "book":[
         {
            "dir":"extract\/pg6130-images.epub"
         },
         {
            "dir":"extract\/pg6130-images.epub\/6130\/0.css"
         },
    }
]
我正在尝试使用

var obj =  JSON.parse(result);
alert(obj.book[0].dir[1]);

有人有什么想法吗?

编辑:我错过了,但第一条评论解释了你错过了书本数组的结束方括号。加上这一点,你就可以走了。首先验证JSON

您不需要执行JSON.parse,只需执行以下操作即可

var data = <?php echo "Your generated JSON code"; ?>;
获取第一本书的第一个目录

var firstDir = data[0]["book"][0]["dir"];

首先你需要验证你的json,我已经验证了你的json,它给出了错误。 在json中,dIr是id。
您已为同一对象定义了3个目录id,这可能是错误。

问题中显示的代码不是有效的JSON。每个
book
数组都缺少结束方括号,并且(由于@punund)数组成员之间缺少逗号。正确的JSON应该是:

[
   {
      "book":[
         {
            "dir":"extract\/pg1065.epub"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/0.css"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/1.css"
         }
      ]
   },

   {
      "book":[
         {
            "dir":"extract\/pg6130-images.epub"
         },
         {
            "dir":"extract\/pg6130-images.epub\/6130\/0.css"
         }
      ]
   }
]
通常不应该直接打印JSON,而是在PHP中创建一个JSON对象,然后使用
JSON\u encode
函数。以下PHP将为您的场景生成有效的JSON:

<?php

$result = array(
        (object)array("book" => array((object)array("dir" => "extract/pg1065.epub"),
                                      (object)array("dir" => "extract/pg1065.epub/1065/0.css"),
                                      (object)array("dir" => "extract/pg1065.epub/1065/1.css"))),
        (object)array("book" => array((object)array("dir" => "extract/pg6130-images.epub"),
                                      (object)array("dir" => "extract/pg6130-images.epub/6130/0.css")))
);


echo json_encode($result);

?>

你的JSON无效,我用它来排序


现在您应该能够很好地访问数据了。

问题中的JSON不是有效的JSON:它缺少每本书的结束方括号。此外,它在数组成员之间缺少逗号。您应该查看可能的重复项,以便在PHP中获得数据的正确JSON编码。@AleksG:这是答案,不是注释。请把它贴出来;这样,OP就可以将其标记为已接受的答案。OP是否必须解析JSON取决于他们是如何得到它的。php与此有什么关系?OP使用php生成JSON代码,我向您展示如何以正确的格式在页面上得到它。您的先生是一位英雄。哈哈,tx工作起来很有魅力,非常感谢您的帮助
[
   {
      "book":[
         {
            "dir":"extract\/pg1065.epub"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/0.css"
         },
         {
            "dir":"extract\/pg1065.epub\/1065\/1.css"
         }
      ]
   },

   {
      "book":[
         {
            "dir":"extract\/pg6130-images.epub"
         },
         {
            "dir":"extract\/pg6130-images.epub\/6130\/0.css"
         }
      ]
   }
]
<?php

$result = array(
        (object)array("book" => array((object)array("dir" => "extract/pg1065.epub"),
                                      (object)array("dir" => "extract/pg1065.epub/1065/0.css"),
                                      (object)array("dir" => "extract/pg1065.epub/1065/1.css"))),
        (object)array("book" => array((object)array("dir" => "extract/pg6130-images.epub"),
                                      (object)array("dir" => "extract/pg6130-images.epub/6130/0.css")))
);


echo json_encode($result);

?>
[
{
    "book": [
        {
            "dir": "extract/pg6130-images.epub"
        },
        {
            "dir": "extract/pg6130-images.epub/6130/0.css"
        }
    ]
},
{
    "book2": [
        {
            "dir": "extract/pg6130-images.epub"
        },
        {
            "dir": "extract/pg6130-images.epub/6130/0.css"
        }
    ]
}
]