2014-07-21 6 views
0

JQuery를 사용하여 JSON 데이터에서 값을 구문 분석하려고합니다.jQuery를 사용하여 JSON 데이터의 값을 구문 분석하십시오.

{ 
    "VMServer": "VM Server 1", 
    "VMs": [{ 
    "ID": "AND-4.1", 
    "OS": "Android- 4.1", 
    "FLAVOUR": "", 
    "CAPS": { 
     "IE": "10", 
     "FF": "28", 
     "GC": "32" 
    }, 
    "DEVICE": { 
     "SAMSSU": [ 
     "S3", 
     "S4" 
     ], 
     "LG": [ 
     "G3", 
     "G4" 
     ] 
    } 
    } 
} 

josn에서 데이터를 추출하여 코드 미만 : 제가 다음 JSON 데이터를 갖는다.

function loadPlatforms(callback) { 
    $.getJSON('/getAllVMs', function (data) { 

    var html = ''; 
    var capVMs = {}; 
    var VMSs = Object.keys(data); 
    VMSs.forEach(function(VMS) { 
     if(data[VMS].length > 0) { 
     data[VMS].forEach(function (val) { 
      for(var brc in gBrowsers) { 
      if(val.CAPS.hasOwnProperty(brc)) { 
       var cap = val.OS + '-' + brc + '-' + val.CAPS[brc]; 
       alert(val.DEVICE) 
       var ds = Object.keys(val.DEVICE); 
       ds.forEach(function (bb) { 

      } 
      } 
     }); 
     } 
    }); 
     }); 
} 

그러나 유형 오류가 발생했습니다 !!

TypeError:val.DEVICE is not an object 
var ds = Object.keys(val.DEVICE); 

그것이 유효한 데이터 난이 일어나는 방법을 모르는 undefined 나타내는 제 경고를 나타내는 3 개의 시간 경고를 출력 val.DEVICE 경고있다. 내 코드가 뭐가 잘못 됐어.

+0

경고 (데이터); 이게 너에게주는거야? – cracker

답변

0

당신은 몇 가지 변수에 JSON 데이터 저장소를지고 말 :

var에 myJsondata = {당신의 JSON 데이터};

는 비슷한 방법으로 시도 :

var obj = $.parseJSON(myJsondata); 
alert(obj.name === "John"); 

당신의 JSON 값을 얻기 위해 당신이 추가 데이터에 대한

alert(obj.VMServer); 

을 사용할 수 있습니다 사용할 수

alert(obj.vms[0].ID =="AND-4.1"); 
alert(obj.vms[0].Device.samssu[0].s3); 

0

나는 문제는 잘못된 개체에서 DEVICE에 액세스하려고한다는 것입니다.

더 자세히 코드를 작성해보십시오 (우려 사항을 분리하십시오). 거기에 몇 가지 console.log 문을 추가하면 어디에서 일어나는지 빠르게 볼 수 있습니다.

무엇보다도 나는 리팩토링을 즉시 시작할 것입니다. 코드 가독성 (Code Readability)은 아마도 당신이 디버그하기가 어렵게 만드는 가장 큰 문제 일 것입니다. 이를 관리 가능한 덩어리로 나눌 수 있고 변수 이름을 (더 간단하게/작게 유지하려고 시도하는 대신)보다 설명적인 의미를 부여하면 도움이 될 것입니다.

0
VMSs.forEach(function(VMS) { 
    if(data[VMS].length > 0) { 
      console.log(data[VMS].length); 
    } 
}); 
//input: 11 , 1 

VMSs.forEach 당신에게 데이터를 확인하고 console.log 인쇄 데이터를 사용, 루프가 두 번 국지적 인 오류가 데이터 루프에 의한 원인 일 수있다;

관련 문제