2016-09-29 55 views
2

我有一个JSON 我想添加密钥值对(取景以下格式后)等如何帧JSON对象动态地动态键和值的串

var json = {}; 
var a = '"key1" : "value1"'; //coming as dynamic 
var b = '"key2" : "value2"'; // coming as dynamic 
json.push(a); // i know it is wrong. 
json.push(b); // i know it is wrong. 
console.log(json); // {"key1": "value1", "key2": "value2"} expected 

var array = []; 
var c = '{"key1": "value1"}'; 
var d = '{"key2": "value2"}'; 
array.push(c); 
array.push(d); 
console.log(array); // ["{"key1": "value1"}", "{"key2": "value2"}"] 

像上面我可以将物品推到阵列,但我怎样才能将json字符串直接推送到json对象。

+1

试试这个'array [“key1”] =“value”' –

+0

你会得到var a ='“key1”:“value1”';动态地作为字符串? –

+0

@SSH JS –

回答

4

先澄清一下;没有像'JSON对象'那样的东西。有一个JSON格式的字符串,并且有一个对象。他们是两个独立的实体。

要将字符串添加到对象,请指定对象的属性并设置其值。您不需要push(),因为它专门用于数组。在你的情况下,它应该是这样的:

var obj = {}; 
obj.key1 = "value1"; 
obj.key2 = "value2"; 
console.log(obj); // = { "key1": "value1", "key2": "value2" } 

设置关键动态使用括号标记:

var key = 'foo'; 
obj[key] = 'bar'; 
console.log(obj); // = { 'foo': 'bar' } 

如果需要,然后将对象转换为一个JSON字符串,请拨打JSON.stringify上object:

var json = JSON.stringify(obj); 

另请注意,在你的第二个例子中,你会得到一个字符串数组,而不是一个对象数组。如果你想对象的数组,你需要在你身边设置的值删除引号,像这样:

var array = []; 
var c = { "key1": "value1" }; 
var d = { "key2": "value2" }; 
array.push(c); 
array.push(d); 
console.log(array); // [{ "key1": "value1" }, { "key2": "value2" }] 

注意在对象引号的位置,并从控制台结果的差异。

+0

var obj = {}; obj.key1 =“value1”; obj.key2 =“value2”; console.log(obj); // = {“key1”:“value1”,“key2”:“value2”} key1和key2值是动态传递的,在循环中我试图获取值并设置为键。不幸的是,它并没有采取动态的价值,而是采用了引用变量本身,因为它最终导致了json输出中的一个值。 (var i = 0; i <3; i ++){ var 0 ='key'+ i; \t obj.a =“value”+1; } console.log(obj); // =对象{a:“value1”} –

+0

对于动态键您的答案是不够的。你可以擦亮它,如果可能的话。 @Rory –

+0

使用括号表示法。我为你增加了一个例子 –