AngularJS http.get 验证有效的 json

IHe*_*oid 4 json verify angularjs

从 URL 获取 json 时,我只想在数据有效时使用它。

到目前为止,我使用JSON 的方法

$http.get(
            'data/mydata.json'
                + "?rand=" + Math.random() * 10000,
            {cache: false}
        )
            .then(function (result) {

                try {
                    var jsonObject = JSON.parse(JSON.stringify(result.data)); // verify that json is valid
                    console.log(jsonObject)

                }
                catch (e) {
                    console.log(e) // gets called when parse didn't work
                }


            })
Run Code Online (Sandbox Code Playgroud)

但是在我进行解析之前,angular 已经失败了

SyntaxError: Unexpected token { at Object.parse (native) at fromJson ( http://code.angularjs.org/1.2.0-rc.2/angular.js:908:14 ) at $HttpProvider.defaults.defaults.transformResponse (http://code.angularjs.org/1.2.0-rc.2/angular.js:5735:18)在http://code.angularjs.org/1.2.0-rc.2/angular.js: 5710:12 at Array.forEach (native) at forEach ( http://code.angularjs.org/1.2.0-rc.2/angular.js:224:11 ) at transformData ( http://code.angularjs. org/1.2.0-rc.2/angular.js:5709:3 ) 在 transformResponse ( http://code.angularjs.org/1.2.0-rc.2/angular.js:6328:17 ) 在wrappedCallback ( http://code.angularjs.org/1.2.0-rc.2/angular.js:9106:81) 在http://code.angularjs.org/1.2.0-rc.2/angular.js:9192:26 angular.js:7861

如何防止 angular 抛出此错误,或者我应该如何处理验证 JSON ?

更新:解决方案:

$http.get(
// url:
'data/mydata.json'
    + "?rand=" + Math.random() * 10000

,

// config:
{
    cache: false,
    transformResponse: function (data, headersGetter) {
        try {
            var jsonObject = JSON.parse(data); // verify that json is valid
            return jsonObject;
        }
        catch (e) {
            console.log("did not receive a valid Json: " + e)
        }
        return {};
    }
}
)
Run Code Online (Sandbox Code Playgroud)

Lau*_*rin 5

您可以transformResponse在 $http 中覆盖。检查这个其他答案