我從我不控制的Web服務中提取數據。結果包括撇號之前的反斜槓(例如O'Donnell)。根據JSLint.com,JSON的結構是有效的 - ,除非響應中包含反斜槓。
我已經提醒了Web服務的提供者。當我在等待ReallyBigCo的迴應時,我想了解更多關於請求端有什麼可能的信息。
有沒有辦法在製作$ http.get()請求時去掉JSON對象中的字符?
我一直在尋找解決方案來捕獲響應作爲一個字符串來剝離字符。但是,只要$ 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 R:
{"findUsers":[
{"email":"[email protected]"},
{"email":"[email protected]"},
{"email":"[email protected]"},
{"email":"ddd.o\'[email protected]"}
]}
與撇號的結果會在控制檯下面的錯誤在IE9:
語法錯誤:無效的characterundefined
我一直在尋找解決方案,以格式化的響應,但帶撇號的任何JSON結果都會立即導致此錯誤。所以似乎不可能使用簡單的解決方案,例如results.replace(/'/g,"");
,除非我知道如何在發生錯誤之前解決問題。
@ T.J.Crowder是角度解析它。我有這樣的問題。我通過使用Ajax而不是Angular解決了這個問題,這不是一個很好的解決方案。 – 2014-11-03 23:04:30
@ toggy-tog-togs:我在仔細檢查JSON.org後刪除了這個問題。 – 2014-11-03 23:05:58