Javascript Json数组仅显示未定义的

Javascript Json数组仅显示未定义的,javascript,json,Javascript,Json,所以读JSON回复简直是噩梦 无论我做什么,我都会得到一个对象列表,未定义或其他问题,但我无法从JSON回复中获得实际信息,但有一个JSON回复。我错过了什么。 JSON调用如下所示 var mapKeyUrl = "/GenMap/getcountry/jsonchk"; var mapKeyUrl = "/GenMap/getcountry/jsonchk" $.getJSON(mapKeyUrl, { regsel: "${regsel}", countryiso: cod

所以读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]}
    ]
}

无论是什么原因导致了这一点,似乎都过于复杂,并多次将其包装起来

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

我会这样做:

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");
var getProp=function(countryData,name){
对于(变量i=0;i
无论是什么原因导致了这一点,似乎都过于复杂,并多次将其包装起来

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

我会这样做:

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");
var getProp=function(countryData,name){
对于(变量i=0;i
试试这个:

    alert(JSON.stringify(contdata));
或使用

   console.log(contdata);
或使用

   console.dir(contdata);
试试这个:

    alert(JSON.stringify(contdata));
或使用

   console.log(contdata);
或使用

   console.dir(contdata);

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

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

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

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

对不起,代码是在外部定义的(应该提到)。如何访问contdata数组中名为exturl的对象。对不起,代码是在外部定义的(应该提到)。如何访问名为exturl的contdata数组中的对象。最终使用contdata.country[0].cname[0]获取该对象。当然其他的解决方案也可以,但这一个最适合我。最终通过contdata.country[0].cname[0]获得了它。当然,其他的解决方案也很有效,但这一个最适合我。