框架Json如何动态地使用动态键和值字符串

时间:2016-09-29 06:51:46

标签: javascript jquery angularjs 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 个答案:

答案 0 :(得分: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

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" }] 

注意对象中引号位置的差异以及控制台的结果。