0

我在使用 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]);

有人有想法么?

4

4 回答 4

1

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

于 2013-05-01T10:09:00.863 回答
0

编辑:我错过了,但第一条评论解释了你错过了书籍数组的右方括号。把它加进去就可以了。首先验证 JSON。

你不需要做 JSON.parse 你可以简单地做

var data = <?php echo "Your generated JSON code"; ?>;

值得注意的是,您可以在 PHP 中创建数据结构,然后简单地使用 json_encode,然后您可以确定它是有效的 JSON

var data = <?php echo json_encode($yourData); ?>;

您已经输出了一个数组,因此要获得第一个对象,您将执行类似的操作

var firstObj = data[0];

获取第一本书的第一个目录

var firstDir = data[0]["book"][0]["dir"];
于 2013-05-01T10:03:37.597 回答
0

问题中显示的代码不是有效的 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_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);

?>
于 2013-05-01T10:09:22.483 回答
0
[
{
    "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"
        }
    ]
}
]

您的 JSON 无效,我使用:http: //jsonlint.com/对其进行排序!

现在您应该可以正常访问数据了。

于 2013-05-01T10:10:11.410 回答