Json数组仅显示未定义的undefined

时间:2014-10-09 16:19:03

标签: javascript json

因此有一个绝对的噩梦阅读JSON回复 无论我做什么,我得到一个对象列表,未定义或其他问题,但我无法从JSON回复中获取实际信息,但有一个JSON回复。我错过了什么 JSON调用看起来像这样

var mapKeyUrl = "/GenMap/getcountry/jsonchk";
var mapKeyUrl = "/GenMap/getcountry/jsonchk"
$.getJSON(mapKeyUrl, {
    regsel: "${regsel}",
    countryiso: code
})
.done(function( contdata ) {
    alert(contdata)
    contdata = contdata.country
    alert(contdata)
    document.getElementById("maptext").innerHTML = "I am an abwrock " + code + contdata.exturl;
})

响应(取自chrome调试)如下所示

{"country":
    [
     {"ccode":["EG"]},
     {"cname":["Egypt"]},
     {"exturl":["N/A"]},
     {"impdate":[null]},
     {"lupdate":["2014-09-28T23:00:00Z"]},
     {"impnote":[null]}
    ]
}

3 个答案:

答案 0 :(得分:2)

你有一个你没有考虑的数组。您需要按如下方式访问您的数据:

console.log(contdata); // would dump entire object
console.log(contdata.country); // would dump inner array with length of 1
console.log(contdata.country[0]); // would dump object inside array
console.log(contdata.country[0].ccode[0]); // would dump country code

答案 1 :(得分:1)

无论产生什么,这似乎都有复杂的问题并且包裹了好几次。

您需要做的是找到具有所需属性的对象(键)然后拉取值,这实际上是数组本身的值。

我要做的是:

var getProp = function(countryData, name) {
   for(var i = 0; i < countryData.length; i++) {
       if (countryData[i].hasOwnProperty(name)) {
           var value_array = countryData[i][name];

           return value_array[0];
       }
   }

   return null;
};

var code = getProp(contdata,"ccode");
var ext_url = getProp(contdata,"exturl");

答案 2 :(得分:1)

试试这个:

    alert(JSON.stringify(contdata));

或使用

   console.log(contdata);

或使用

   console.dir(contdata);