[英]Cant access data from json
我在使用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提供了錯誤。 在您的json中, dIr是id。 您為同一對象定義了3個目錄ID,這可能是錯誤的。
編輯:我錯過了,但第一條評論解釋了您缺少本書數組的右方括號。 加進去,你的好去處。 首先驗證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"];
問題中顯示的代碼不是有效的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);
?>
[
{
"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/對其進行了排序!
現在您應該可以正常訪問數據了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.