2017-04-26 44 views
0

我想訪問嵌套在一對數組中的一堆鍵。我們正在談論的是媒體內部的所有src鍵對象 - 我該如何實現?使用字符串鍵訪問嵌套數組中的JSON對象

"attachments":[ 
    { 
     "data":[ 
     { 
      "url":"https://www.facebook.com/media/set/?set=pcb.1334460356630907&type=1", 
      "type":"album", 
      "title":"Photos from Rasmus Bøker Christensen's post", 
      "target":{ 
       "url":"https://www.facebook.com/media/set/?set=pcb.1334460356630907&type=1", 
       "id":"1334460356630907" 
      }, 
      "subattachments":{ 
       "data":[ 
        { 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821134255&set=gm.1334460356630907&type=3", 
        "type":"photo", 
        "target":{ 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821134255&set=gm.1334460356630907&type=3", 
         "id":"10155421821134255" 
        }, 
        "media":{ 
         "image":{ 
          "width":720, 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-0/p180x540/18194065_10155421821134255_140448089567975329_n.jpg?oh=ea225d9f9117eacf0988c90df99db4ab&oe=599424AA", 
          "height":540 
         } 
        } 
        }, 
        { 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821149255&set=gm.1334460356630907&type=3", 
        "type":"photo", 
        "target":{ 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821149255&set=gm.1334460356630907&type=3", 
         "id":"10155421821149255" 
        }, 
        "media":{ 
         "image":{ 
          "width":540, 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/18157176_10155421821149255_5817407499141479529_n.jpg?oh=44b9765b9db47c2ca24fa39f91c36674&oe=597A78C2", 
          "height":720 
         } 
        } 
        }, 
        { 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821159255&set=gm.1334460356630907&type=3", 
        "type":"photo", 
        "target":{ 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821159255&set=gm.1334460356630907&type=3", 
         "id":"10155421821159255" 
        }, 
        "media":{ 
         "image":{ 
          "width":540, 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/18194059_10155421821159255_3644927739532235006_n.jpg?oh=5b74b2b4e733ff72c9883f4692a7007d&oe=59744F95", 
          "height":720 
         } 
        } 
        } 

我將如何訪問SRC用一個例子是這樣的:

attachments[0].data[0].subattachments.data[0].target.url 
+0

你只是分配一個字符串。它甚至不訪問你的嵌套對象。 – trincot

+1

有什麼問題?你有什麼嘗試?這是什麼關於這段代碼'var image =「attachments。[0] .data。[0]」;'。我不確定你在這裏嘗試什麼。你是否試圖將該對象分配給'var image'?或者'var image'包含你想要訪問的路徑? – Thomas

+0

'var image = attachments [0] .data [0] .subattachments.data [0] .target.url'等... – adeneo

回答

0

您可以使用此功能讓所有的src屬性的值:

function deepKeyValues(obj, key) { 
 
    return Object(obj) !== obj ? [] 
 
     : (key in obj ? [obj[key]] : []).concat(
 
      ...Object.keys(obj).map(k => deepKeyValues(obj[k], key)) 
 
     ) 
 
} 
 
// Sample data 
 
var obj = { 
 
    "attachments":[{ 
 
     "data":[{ 
 
      "url":"https://www.facebook.com/media/set/?set=pcb.1334460356630907&type=1", 
 
      "type":"album", 
 
      "title":"Photos from Rasmus Bøker Christensen's post", 
 
      "target":{ 
 
       "url":"https://www.facebook.com/media/set/?set=pcb.1334460356630907&type=1", 
 
       "id":"1334460356630907" 
 
      }, 
 
      "subattachments":{ 
 
       "data":[{ 
 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821134255&set=gm.1334460356630907&type=3", 
 
        "type":"photo", 
 
        "target":{ 
 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821134255&set=gm.1334460356630907&type=3", 
 
         "id":"10155421821134255" 
 
        }, 
 
        "media":{ 
 
         "image":{ 
 
          "width":720, 
 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-0/p180x540/18194065_10155421821134255_140448089567975329_n.jpg?oh=ea225d9f9117eacf0988c90df99db4ab&oe=599424AA", 
 
          "height":540 
 
         } 
 
        } 
 
       }, { 
 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821149255&set=gm.1334460356630907&type=3", 
 
        "type":"photo", 
 
        "target":{ 
 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821149255&set=gm.1334460356630907&type=3", 
 
         "id":"10155421821149255" 
 
        }, 
 
        "media":{ 
 
         "image":{ 
 
          "width":540, 
 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/18157176_10155421821149255_5817407499141479529_n.jpg?oh=44b9765b9db47c2ca24fa39f91c36674&oe=597A78C2", 
 
          "height":720 
 
         } 
 
        } 
 
       }, { 
 
        "url":"https://www.facebook.com/photo.php?fbid=10155421821159255&set=gm.1334460356630907&type=3", 
 
        "type":"photo", 
 
        "target":{ 
 
         "url":"https://www.facebook.com/photo.php?fbid=10155421821159255&set=gm.1334460356630907&type=3", 
 
         "id":"10155421821159255" 
 
        }, 
 
        "media":{ 
 
         "image":{ 
 
          "width":540, 
 
          "src":"https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/18194059_10155421821159255_3644927739532235006_n.jpg?oh=5b74b2b4e733ff72c9883f4692a7007d&oe=59744F95", 
 
          "height":720 
 
         } 
 
        } 
 
       }] 
 
      } 
 
     }] 
 
    }] 
 
}; 
 
// Demo 
 
console.log(deepKeyValues(obj, 'src'));

+0

真的很酷的功能,完美的作品!非常感謝 – DbTheChain