2014-10-09 2 views
0

절대적인 악몽을 가지고 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; 
}) 

응답 모양이 복잡한 문제 이상 갖고있는 것 같아요 생성하고 몇 시간이 싸서 무엇이든

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

답변

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 
+0

결국 contdata.country [0] .cname [0]이 있습니다. 다른 솔루션들도 잘 작동하지만,이 제품은 저에게 가장 적합했습니다. – vrghost

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"); 
+0

죄송합니다. 코드는 외부에 정의되어 있습니다 (언급해야 함). conturata 배열 내에서 exturl이라는 객체에 어떻게 액세스합니까? – vrghost

1

이 시도 : 내가 할 거라고 무엇

같은 뭔가가

console.log(contdata); 

또는 사용

alert(JSON.stringify(contdata)); 

또는 사용을

console.dir(contdata); 
관련 문제