2015-09-10 89 views
-1

我想用函数调用动态地用{“John”:“Dough”}动态替换“placeholder”。用Javascript动态替换JSON属性

这工作:

a = {foo:{bar:{baz:"placeholder"}}}; 
a.foo.bar.baz = {"John" : "Dough"}; 
console.log(JSON.stringify(a)); 

> {"foo":{"bar":{"baz":{"John":"Dough"}}}} 

但这并不:

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz = { key: value}; 
    console.log(JSON.stringify(a)); 
    }; 
test("John", "Dough"); 

> {"foo":{"bar":{"baz":{"key":"Dough"}}}} 

这也不起作用:

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz[key] = value; 
    console.log(JSON.stringify(a)); 
    }; 
test("John", "Dough"); 

> {"foo":{"bar":{"baz":"placeholder"}}} 

我测试的Node.js的在浏览器中可能不会改变。

+0

有没有这样的事“JSON对象”的Java脚本。有json,这是一个对象的serielized形式,和一个对象。期。说json反对这就像说“蛋糕配方蛋糕”,要么是配方蛋糕,要么是蛋糕。没有之间。 –

+0

@ArunPJohny - 这个问题没有被你称为重复的问题回答。这个问题是问如何替换一个属性。如果你真的看看提供的代码,那么你可以看到OP已经知道如何动态引用使用变量作为键名称的属性。他做到了。将来在标记为重复之前停止。 – Archer

+0

有些SO大师对这些问题真的很不宽容。我想,我清楚地表达了我的问题。无论如何,这是一个伟大的网站。 – rsa

回答

1

更改功能波纹管

var test = function(key, value) { 
    a = {foo:{bar:{baz:"placeholder"}}}; 
    a.foo.bar.baz = {}; //creating a new object as `baz` value then assign 
    a.foo.bar.baz[key] = value; 
    console.log(JSON.stringify(a)); 
}; 
+0

是的,我编辑和置评论。 – Mritunjay

+0

魔鬼在这里倡导 - 如果'baz'不是'bar'的唯一属性?使用此代码,您将清除所有其他属性。 – Archer

+0

nope我只是说'bar.baz = {}',为什么这会影响'bar'的其他属性? – Mritunjay