在json中插入javascript变量值

时间:2014-06-21 12:42:05

标签: javascript json

我有一个JSON变量,如下所示:

{"events": [
{"event_id": "1", "event_name": "Breakfast"},
{"event_id": "1", "event_name": "Calling Bob"}
]};

我有两个vaiables

x=2; y=jam;

我想在json中推送变量,使得x是event_id,y是event_name,所以我的json看起来像 -

{"events": [
{"event_id": "1", "event_name": "Breakfast"},
{"event_id": "1", "event_name": "Calling Bob"},
{"event_id": "2", "event_name": "jam"}
]};

用于推送的功能是

k='({"event_id":"'+x+'","event_name":"'+y+'"})';
san.events.push(k);

其中san是我存储json的变量。 我解析变量san并应用push动作并对其进行字符串化并显示它,但在结果中我的json数据语法正在改变,就像在json中生成额外的'/'符号一样。

4 个答案:

答案 0 :(得分:4)

JSON对象是JavaScript中的一等公民,您可以将它们用作文字。

var k= {"event_id": x, "event_name":y};
san.events.push(k);

如上所述完全相同:

var k = new Object();
k.event_d = x;
k.event_name = y;
san.events.push(k);

JSON只是一种在JavaScript中表示常规对象的方法。

如果您真的想将字符串转换为JSON,可以使用JSON.parse()方法,但通常要避免使用此方法。

修改

正如@Alvaro指出的那样,即使你可以使用JSON语法创建常规对象,它也不是Object的同义词,它是'只是一种表示Object数据的方式,而不仅仅是任何数据,JSON不能代表递归对象。

答案 1 :(得分:4)

缺少变量值引用此处

x=2; y='jam';

并像这样更改推送代码

k={"event_id":"'+x+'","event_name":"'+y+'"};
san.events.push(k);

答案 2 :(得分:2)

这是解决这个问题的方法。

san = {"events": [
{"event_id": "1", "event_name": "Breakfast"},
{"event_id": "1", "event_name": "Calling Bob"}
]};
var x=2; var y='am';
k={"event_id":"x","event_name":y};
san.events.push(k);
console.log(san);

http://jsfiddle.net/3NSy8/

答案 3 :(得分:1)

这对你有用吗?

x = "2";
y = "jam"
k= {"event_id": x, "event_name": y };
san.events.push(k);