우리가 고려하는 것은 서버가 JSON 형식으로 문자열을 반환한다는 것입니다. JSONObject와 같은 플러그인으로 캡슐화된 JSON 개체의 경우에도 마찬가지이므로 여기서는 설명하지 않습니다.
var 데이터="
{
루트:
[
{이름:'1',값:'0'},
{이름:'6101',값:'시안시'},
{이름:'6102',값:'퉁촨시'},
{이름:'6103',값:'Baoji City'},
{이름:'6104',값:'Xianyang City'},
{이름:'6105',값:'Weinan City'},
{이름:'6106',값:'Yan'an City'},
{이름:'6107',값:'한중시'},
{이름:'6108',값:'Yulin City'},
{이름:'6109',값:'안강시'},
{이름:'6110',값:'Shangluo City'}
]
}";
jquery에서 비동기적으로 얻은 데이터 유형인 json 개체와 문자열을 기반으로 두 가지 방법으로 얻은 결과를 처리하는 방법을 소개합니다.
1. 서버에서 반환된 JSON 문자열의 경우 jquery 비동기 요청에 유형 설명이 없거나 문자열로 허용되는 경우 메서드가 너무 번거롭지 않아야 합니다. eval()에 문자열을 넣으면 한 번 실행됩니다. 이 방법은 일반적인 javascipt를 사용하여 json 객체를 얻는 데에도 적합합니다. 다음은 예입니다.
var dataObj=eval("(" data ")");//json 객체로 변환
Alert(dataObj.root.length);//루트의 하위 객체 개수 출력
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
사실을 반환합니다.
}
//각 루트 하위 객체의 이름과 값을 출력합니다
Alert("이름:" 항목.이름 ",값:" 항목.값)
})
참고: 일반 js에서 json 객체를 생성하려면 $.each() 메서드를 for 문으로 바꾸기만 하면 되고 나머지는 변경되지 않습니다.
2. 서버에서 반환된 JSON 문자열의 경우 jquery 비동기 요청이 유형(일반적으로 이 구성 속성)을 "json"으로 설정하거나 $.getJSON() 메서드를 사용하여 서버 반환을 얻는 경우 이때 얻은 결과는 이미 json 개체이므로 eval() 메서드가 필요하지 않으며 개체를 직접 호출하기만 하면 됩니다. 여기서는 데이터 처리 방법을 설명하기 위해 $.getJSON 메서드를 예로 사용합니다.
$.getJSON("
http://user.qzone.qq.com/2227211070",{param:"gaoyusi"},function(data){
//여기에 반환된 데이터는 이미 json 객체입니다
//아래 기타 작업은 첫 번째 경우와 동일합니다
$.each(data.root,function(idx,item){
if(idx==0){
return true;//countinue와 동일, break와 동일하게 false 반환
}
Alert("이름:" 항목.이름 ",값:" 항목.값);
})
});
위 내용은 jQuery 파싱 json에 관한 이 글의 전체 내용입니다.