Я вытаскиваю данные из веб-службы, которую я не контролирую. Результаты включают обратную косую черту перед апострофом в именах (например, O'Donnell). Согласно JSLint.com, структура JSON действительна - , за исключением случаев, когда ответ включает апострофы с обратной косой чертой.
Я предупредил поставщика веб-службы. Пока я жду ответа от ReallyBigCo, я хотел узнать больше о том, что возможно в конце запроса.
Есть ли способ лишить персонажей объекта JSON при выполнении запроса $ http.get()?
Я искал решения для захвата ответа в виде строки, чтобы разделить символы. Тем не менее, я получаю сообщение об ошибке, как только закончится функция $ http.get().
Этот AngularJS код отлично работает (когда ответ JSON действителен):
var app = angular.module('app',[]);
app.factory('appresults', function($http) {
return {
getAsync: function(callback) {
var myURL = https://address-to-really-big-co-webservice.com;
$http.get(myURL).success(callback);
}
};
});
app.controller('appcontroller', function($scope, appresults) {
appresults.getAsync(function(results) {
$scope.appdata = results.findUsers;
});
});
я могу отобразить список писем в моей странице с помощью этого кода, когда JSON действительно:
<p ng-repeat="item in appdata">{{item.email}}</p>
Вот пример рабочих результатов JSON:
{"findUsers":[
{"email":"[email protected]"},
{"email":"[email protected]"},
{"email":"[email protected]"}
]}
Хотя эти результаты JSON вызывают ERRO г:
{"findUsers":[
{"email":"[email protected]"},
{"email":"[email protected]"},
{"email":"[email protected]"},
{"email":"ddd.o\'[email protected]"}
]}
Результаты с апострофом создает следующую ошибку в консоли в IE9:
SyntaxError: Invalid characterundefined
Я искал решение переформатировать ответ, но любые результаты JSON с апострофом немедленно приводят к этой ошибке. Поэтому не представляется возможным использовать простое решение, такое как results.replace(/'/g,"");
, если я не знаю, как обращаться к объекту до возникновения ошибки.
@ T.J.Crowder это Угловая Синтаксический его. У меня была такая проблема. Я решил это, используя Ajax, а не Angular, что не является отличным решением. –
@ toggy-tog-togs: я удалил этот вопрос после двойной проверки JSON.org. –