繁体   English   中英

如何使用动态键和值字符串动态构造Json对象

[英]How frame Json object dynamically with dynamic key and value strings

我有一个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对象。

首先一点澄清; 没有“ JSON对象”之类的东西。 有一个JSON格式的字符串,并且有一个对象。 它们是两个单独的实体。

要将字符串添加到对象,请指定对象的属性并设置其值。 您不需要push() ,因为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对象调用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" }] 

注意对象中引号位置和控制台结果的不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM