我遇到了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]);
有人有什么想法吗?
答案 0 :(得分:1)
首先你需要验证你的json,我已经验证了你的json它给出了错误。 在你的json dIr 是id。 您已为同一对象定义了3 dir id,这可能是错误。
答案 1 :(得分: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"];
答案 2 :(得分: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);
?>
答案 3 :(得分: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/对其进行排序!
现在你应该能够很好地获取数据了。