我有一个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对象。
答案 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" }]
注意对象中引号位置的差异以及控制台的结果。