簡體   English   中英

無法從json訪問數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM