我有一个大对象,我想转换为JSON并发送.但它具有圆形结构.我想抛出任何存在的循环引用并发送任何可以进行字符串化的内容.我怎么做?
谢谢.
var obj = {
a: "foo",
b: obj
}
Run Code Online (Sandbox Code Playgroud)
我想将obj字符串化为:
{"a":"foo"}
Run Code Online (Sandbox Code Playgroud) 这似乎是一个已解决的问题,但我无法找到解决方案.
基本上,我读取了一个JSON文件,更改了一个密钥,并将新的JSON写回到同一个文件中.一切正常,但我放松了JSON格式.所以,而不是:
{
name:'test',
version:'1.0'
}
Run Code Online (Sandbox Code Playgroud)
我明白了
{name:'test',version:'1.1'}
Run Code Online (Sandbox Code Playgroud)
在Node.js中有没有办法将格式良好的JSON写入文件?
我有一个包含循环引用的JavaScript对象定义:它有一个引用父对象的属性.
它还具有我不想传递给服务器的功能.我如何序列化和反序列化这些对象?
我读过这样做的最好方法是使用Douglas Crockford的stringify.但是,我在Chrome中收到以下错误:
TypeError:将循环结构转换为JSON
代码:
function finger(xid, xparent){
this.id = xid;
this.xparent;
//other attributes
}
function arm(xid, xparent){
this.id = xid;
this.parent = xparent;
this.fingers = [];
//other attributes
this.moveArm = function() {
//moveArm function details - not included in this testcase
alert("moveArm Executed");
}
}
function person(xid, xparent, xname){
this.id = xid;
this.parent = xparent;
this.name = xname
this.arms = []
this.createArms = function () {
this.arms[this.arms.length] = new arm(this.id, this);
}
}
function group(xid, xparent){
this.id = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将带有循环引用的对象从node.js服务器传递到客户端javascript.
服务器(node.js):
var object = { circular: object }
//....
app.get('/', function(req, res){
res.render('index.jade', {object: object});
});
Run Code Online (Sandbox Code Playgroud)
客户端Jade/Javascript
script var object = !{JSON.stringify(object)};
Run Code Online (Sandbox Code Playgroud)
在这里,我得到object包含循环引用的错误.
有没有
循环引用的任何方式来获取object客户端javascript ?
关于在JavaScript中测试两个对象以实现深度相等的主题,已经有很多墨水.但是,没有人关心区分以下两个对象:
var o1 = [{},{}];
var subitem = {};
var o2 = [subitem, subitem];
var o3 = [{}, {}];
Run Code Online (Sandbox Code Playgroud)
大多数深度相等算法会说o1,o2并且o3是相同的.我想要一个算法,说明o1并且o2不相等,但是o1并且o3相等.换句话说,我想要一个算法,告诉我指针图是否具有相同的结构.我关心这个因为如果我对第一个元素进行了修改,则反映在第二个元素中o2,而不是在第二个元素中o1.
这意味着循环结构的深度相等应该起作用:
var o1 = [];
o1.push(o1);
var o2 = [];
o2.push(o2);
// deepGraphEqual(o1, o2) == true
var o3 = [[]];
o3[0].push(o3);
// deepGraphEqual(o1, o3) == false
Run Code Online (Sandbox Code Playgroud)
如果你要避免改变项目,你可能需要ECMAScript6地图,所以我会接受使用它们的解决方案.
var Products = [
{ id: 0, product: 'Sour Apple', price: 10, count: 1, product_thumb: 'resources/css/apple.png' },
{ id: 1, product: '30 dsfdf', price: 20, count: 1, product_thumb: 'resources/css/croissant.png' },
{ id: 2, product: 'Discount Coffee', price: 30, count: 1, product_thumb: 'resources/css/coffecup.png' },
{ id: 3, product: '30 Donut Combo', price: 40, count: 1, product_thumb: 'resources/css/donut.png' },
{ id: 4, product: 'Invisishield', price: 50, count: 1, product_thumb: 'resources/css/apple.png' },
{ id: 5, product: 'Pink Cupcake', price: 60, count: 1, product_thumb: …Run Code Online (Sandbox Code Playgroud) 我想将EXTjs类编码为Json,但是,我不能..
我使用JSON.stringify,但这给出了Exception和Type错误.
我怎样才能做到这一点?
谢谢,在这里我的代码.
Ext.define('Text',{
extend : 'Ext.Img',
x : 50,
y : 50,
size : 100,
text : 'Text',
name : 'Text',
src : ' ',
tag : '',
Events : []
});
var text = new Text();
var temp = JSON.stringify(text);
Run Code Online (Sandbox Code Playgroud) javascript ×5
json ×5
node.js ×3
ecmascript-6 ×1
express ×1
extjs ×1
extjs4 ×1
jquery ×1
pug ×1
stringify ×1