2016-10-27 4 views
2

ajax 호출 후 아래의 JSON 응답이 표시됩니다. 내가 사용하고아래의 JSON 응답을 구문 분석하는 방법

{"head":{"json":"{ 'rows': [ {'CustName' : 'JAMES', 'CustId' : 'Gans Communications'} , {'CustName' : 'JAMES', 'CustId' : 'GANNETTW'} , {'CustName' : 'JAMES', 'CustId' : 'GANNONCO'} , {'CustName' : 'JAMES', 'CustId' : 'GANSTIRE'} , {'CustName' : 'JAMES', 'CustId' : 'GANTABSW'} , {'CustName' : 'JAMES', 'CustId' : 'GANTONMI'} , {'CustName' : 'JAMES', 'CustId' : 'GANDALF'} , {'CustName' : 'JAMES', 'CustId' : 'GANDALF2'} , {'CustName' : 'JAMES', 'CustId' : 'GANDK'} , {'CustName' : 'JAMES', 'CustId' : 'GANDMTOW'} , {'CustName' : 'JAMES', 'CustId' : 'GANDOD'} , {'CustName' : 'JAMES', 'CustId' : 'GANDTOWI'} , {'CustName' : 'JAMES', 'CustId' : 'GANDY.LD'} , {'CustName' : 'JAMES', 'CustId' : 'GANE .LD'} , {'CustName' : 'JAMES', 'CustId' : 'GANICATL'} , {'CustName' : 'JAMES', 'CustId' : 'GANKEMA'} , {'CustName' : 'JAMES', 'CustId' : 'GANKEM4'} , {'CustName' : 'JAMES', 'CustId' : 'GANLYWAL'} , {'CustName' : 'JAMES', 'CustId' : 'GANN ETT'} , {'CustName' : 'JAMES', 'CustId' : 'GANNETTT'} ]}"},"body":null,"responseTime":null,"leftPanel":null} 

내가 제대로 값을 가져올 수 couldnot Jquery.But 사용하여 텍스트 상자에 표시 할 CUSTNAME 및 CustId을 찍어 보았습니다. 나는 위의 값에 오류가 발생하고

var results_customer=data.head.json;      
var new_val = JSON.stringify(results_customer);     
var newresult = eval(results_customer); 
alert(newresult.length); 
console.log(newresult); 

:

다음은 내 샘플 코드입니다.

값을 가져 오는 데 도움을 줄 수 있습니까? 미리 감사드립니다.

+0

캐릭터 라인 화 할 필요가 없습니다. result_customer에 이미 파싱 된 데이터가 포함되어 있어야합니다. – Woncker

+0

** stringify() **가 아닌 ** parse() **가 필요합니다. 그러나 나는 ** { 'rows': []} **와 같은 이름에 대한 작은 따옴표에 대해서는 조금 걱정하고있다. JSON은 작은 따옴표를 사용하지 않습니다. – JonSG

답변

2

응답으로 잘못 인코딩 된 Json 문자열이 있습니다. Json 문자열은 큰 따옴표 "으로 단락 지어 야하며 단문으로 인용 부호 '으로 구분해야합니다. 그래서 당신은 JSON.parse() 방법을 사용하기 전에 변환 할 수 있습니다

var response = {"head":{"json":"{ 'rows': [ {'CustName' : 'JAMES', 'CustId' : 'Gans Communications'} , {'CustName' : 'JAMES', 'CustId' : 'GANNETTW'} , {'CustName' : 'JAMES', 'CustId' : 'GANNONCO'} , {'CustName' : 'JAMES', 'CustId' : 'GANSTIRE'} , {'CustName' : 'JAMES', 'CustId' : 'GANTABSW'} , {'CustName' : 'JAMES', 'CustId' : 'GANTONMI'} , {'CustName' : 'JAMES', 'CustId' : 'GANDALF'} , {'CustName' : 'JAMES', 'CustId' : 'GANDALF2'} , {'CustName' : 'JAMES', 'CustId' : 'GANDK'} , {'CustName' : 'JAMES', 'CustId' : 'GANDMTOW'} , {'CustName' : 'JAMES', 'CustId' : 'GANDOD'} , {'CustName' : 'JAMES', 'CustId' : 'GANDTOWI'} , {'CustName' : 'JAMES', 'CustId' : 'GANDY.LD'} , {'CustName' : 'JAMES', 'CustId' : 'GANE .LD'} , {'CustName' : 'JAMES', 'CustId' : 'GANICATL'} , {'CustName' : 'JAMES', 'CustId' : 'GANKEMA'} , {'CustName' : 'JAMES', 'CustId' : 'GANKEM4'} , {'CustName' : 'JAMES', 'CustId' : 'GANLYWAL'} , {'CustName' : 'JAMES', 'CustId' : 'GANN ETT'} , {'CustName' : 'JAMES', 'CustId' : 'GANNETTT'} ]}"},"body":null,"responseTime":null,"leftPanel":null}; 
 

 
var json = response.head.json.replace(/'/g, '"'); 
 

 
var data = JSON.parse(json); 
 
console.log(data);

데이터를 가정하면 싱글 따옴표를 포함하지 않습니다 ...

+0

감사합니다. – saminathan

+0

또한 'to'를 대체하는 데 문제가 있습니다. 내 응답에 xxx'x 값이 있으면이 작은 따옴표도 큰 따옴표로 변환됩니다. 이 문제를 해결할 방법이 있습니까 – saminathan

+0

값에 이스케이프 처리되지 않은 싱글 인용 부호가 포함되어있는 경우 디코딩 전에 수정하지 못할 수 있습니다. php는 따옴표를 변환해야하는지 알 수 없습니다. 오류가 여기에 있기 때문에 백엔드 코드에서 문자열이 생성 된 곳을 고쳐야합니다. 잘못된 json을 생성합니다. –

관련 문제