2016-10-27 4 views
2

Я получаю ответ JSON ниже после вызова ajax.Как разобрать ответ 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} 

Я использовал попытался взять CustName и CustID для отображения в текстовом поле с помощью Jquery.But я couldnot возможность получать значения правильно.

Ниже мой пример кода:

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

нет никакой необходимости stringify. ваш result_customer должен уже содержать проанализированные данные – Woncker

+0

Вы хотите ** parse() ** вместо ** stringify() **. Однако меня немного беспокоят одиночные кавычки для имен типа ** {'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

также у меня проблема с заменой 'на'. Если мой ответ имеет значения как xxx'x, то эта одиночная цитата также преобразуется в двойные кавычки. Есть ли способ разрешить это? – saminathan

+0

Если ваши значения содержат одиночные кавычки _that не escaped_, нет способа исправить это до декодирования, поскольку php не может знать, какая цитата должна быть преобразована или нет. Таким образом, вы должны исправить это, когда строка генерируется, в вашем внутреннем коде, потому что ошибка здесь, она генерирует bad json. –

Смежные вопросы