解析由 CircularJSON 序列化的 JSON
Parse JSON serialised by CircularJSON
我的 node.js 代码中有一个 JSON 对象,它包含循环引用。为了将此数据发送到浏览器,我使用 NPM 模块 circular-json 将对象字符串化并序列化循环引用:
var CircularJSON = require("circular-json");
app.get("/api/entries", function(req, res){
contentClient.entries({"content_type": "xxxxxxxxxxx"}, function(err, entries){
if (err) throw err;
res.send(CircularJSON.stringify(entries));
});
});
这工作正常并通过 res.send();
发送序列化数据
现在,在我的前端 Angular 代码中,我需要使循环引用可用。对象中的序列化字段之一在客户端看起来像这样:"~0~fields~twitter~1"
我在浏览器中尝试了以下操作:
- 已将
circular-json.js
的一个版本复制到我的前端站点
- 像这样链接到我的
index.html
中的脚本:<script src="/framework/lib/circular-json.js"></script>
- 像这样设置
CircularJson
变量:var CircularJSON = window.CircularJSON;
像这样解析传入的JSON:
$http.get("/api/entries").then(function(res){
console.log(CircularJSON.parse(res.data[0]));
});
我收到以下错误:
SyntaxError: Unexpected token o
对于一次性调用,我认为您可以按如下方式使用 $http
function appendTransform(defaults, transform) {
// We can't guarantee that the default transformation is an array
defaults = angular.isArray(defaults) ? defaults : [defaults];
// Append the new transformation to the defaults
defaults.unshift(transform);
return defaults;
}
$http({
url: '...',
method: 'GET',
transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
return CircularJSON.parse(value);
})
});
或者您可以为每个调用定义一个拦截器,示例如下:https://docs.angularjs.org/api/ng/service/$http
更新:
Unshift 不 return 数组。修改了代码,现在应该可以了。
我的 node.js 代码中有一个 JSON 对象,它包含循环引用。为了将此数据发送到浏览器,我使用 NPM 模块 circular-json 将对象字符串化并序列化循环引用:
var CircularJSON = require("circular-json");
app.get("/api/entries", function(req, res){
contentClient.entries({"content_type": "xxxxxxxxxxx"}, function(err, entries){
if (err) throw err;
res.send(CircularJSON.stringify(entries));
});
});
这工作正常并通过 res.send();
发送序列化数据
现在,在我的前端 Angular 代码中,我需要使循环引用可用。对象中的序列化字段之一在客户端看起来像这样:"~0~fields~twitter~1"
我在浏览器中尝试了以下操作:
- 已将
circular-json.js
的一个版本复制到我的前端站点 - 像这样链接到我的
index.html
中的脚本:<script src="/framework/lib/circular-json.js"></script>
- 像这样设置
CircularJson
变量:var CircularJSON = window.CircularJSON;
像这样解析传入的JSON:
$http.get("/api/entries").then(function(res){ console.log(CircularJSON.parse(res.data[0])); });
我收到以下错误:
SyntaxError: Unexpected token o
对于一次性调用,我认为您可以按如下方式使用 $http
function appendTransform(defaults, transform) {
// We can't guarantee that the default transformation is an array
defaults = angular.isArray(defaults) ? defaults : [defaults];
// Append the new transformation to the defaults
defaults.unshift(transform);
return defaults;
}
$http({
url: '...',
method: 'GET',
transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
return CircularJSON.parse(value);
})
});
或者您可以为每个调用定义一个拦截器,示例如下:https://docs.angularjs.org/api/ng/service/$http
更新: Unshift 不 return 数组。修改了代码,现在应该可以了。