簡體   English   中英

無法使用JavaScript訪問嵌套的json元素

[英]Can't access nested json elements with javascript

我真的迷上了如何訪問從我的api獲取的json響應的嵌套元素。 我驗證了json,並顯示為有效。

例如,如何訪問numFound屬性? 這是我的代碼不起作用:


$.ajax({
    url: "/api/SearchAPI/infopop?id=" + songID,
    datatype:"json",
    method: "get"
}).done(function (data) {
    var obj = JSON.parse(data);
    alert(obj);                   /* This displays the entire json response 
    alert(obj.response.numFound)    /* This does not work
    alert(data.response.numFound)    /* This does not work

這是我嘗試訪問的回復

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "indent":"off",
      "fl":"Name,Description,Keywords,ISRC,Instruments,Lyrics,Bpm,Vocal,Tempo,Key,TV_Genres,Music_Genres,length\r\n,Writers,profileImagePath\r\n,Publishers\r\n,songImagePath\r\n,Band_Styles",
      "start":"0",
      "callback":"?\r\n",
      "fq":[
        "id:00106c8c-7e21-4e75-80da-cdff8e6d3d44",
        "publicflag:1",
        "pubname:komposed"
      ],
      "rows":"10",
      "version":"2.2",
      "wt":"json"
    }
  },
  "response":{
    "numFound":1,
    "start":0,
    "docs":[
      {
        "profileImagePath":[
          "https://komposed.blob.core.windows.net/jrock-1873564a-d409-4370-80d8-23dc97114f18/songimage/f557110f-4ad3-4353-a1b3-3ba70d52e8f0?sv=2014-02-14&sr=b&sig=Q3ywrwEa6URp%2FPCvK0Ngesza8PBhMEmE5ONeKhw8vE4%3D&st=2016-06-16T16:49:45Z&se=2066-06-16T16:54:45Z&sp=r&rsct=application%2Foctet-stream&rscd=attachment%3B%20filename%3Dredneck.jpeg"
        ],
        "songImagePath":[
          "https://komposed.blob.core.windows.net/jrock-1873564a-d409-4370-80d8-23dc97114f18/songimage/f0c00dcd-69f9-42af-b236-4a53f0d78e76?sv=2014-02-14&sr=b&sig=oF0STMDddyuJiNZO%2BE78sYtbboC4ic%2Fl4bR5ESBFouE%3D&st=2016-06-16T16:48:59Z&se=2066-06-16T16:53:59Z&sp=r&rsct=application%2Foctet-stream&rscd=attachment%3B%20filename%3DTENSION%20LAST%20MAN.jpg"
        ],
        "Name":[
          "Bottle Service Tension"
        ],
        "Description":[
          "Cool crime scene track with a chill night club vibe"
        ],
        "Bpm":[
          90
        ],
        "Vocal":[
          "Acapella"
        ],
        "Tempo":[
          "Fast"
        ],
        "Writers":[
          "Justin Sirota|100.00|"
        ],
        "Keywords":[
          "club, crime, investigation, cool, lounge, pulse"
        ],
        "TV_Genres":[
          "Tension"
        ]
      }
    ]
  }
}

只需使用obj.numFound response是您的data參數。

$.ajax({
...
}).done(function (response) {
  alert(response.numFound)
...

另外,由於您通過datatype:"json",告訴jQuery(假設基於代碼),響應為JSON類型datatype:"json",您無需對其執行JSON.parse

原來問題出在我的API中。 我將json作為字符串而不是對象返回。 一旦這樣做,javascript就可以引用json元素。 感謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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