在json中插入javascript变量值

San*_*eep 8 javascript json

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

{"events": [
{"event_id": "1", "event_name": "Breakfast"},
{"event_id": "1", "event_name": "Calling Bob"}
]};
Run Code Online (Sandbox Code Playgroud)

我有两个vaiables

x=2; y=jam;
Run Code Online (Sandbox Code Playgroud)

我想在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"}
]};
Run Code Online (Sandbox Code Playgroud)

我用来推动的功能是

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

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

And*_*ena 5

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

var k= {"event_id": x, "event_name":y};
san.events.push(k);
Run Code Online (Sandbox Code Playgroud)

如上所述,与以下内容完全相同:

var k = new Object();
k.event_d = x;
k.event_name = y;
san.events.push(k);
Run Code Online (Sandbox Code Playgroud)

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

如果您确实希望将字符串转换为JSON,则可以使用JSON.parse()方法,但通常希望避免这种情况。

编辑

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

  • 请不要使用JSON作为对象的同义词。JSON是字符串序列化格式。如果不是字符串,则首先不能为JSON。 (2认同)

cha*_*ndu 4

变量值缺失 此处引用

x=2; y='jam';
Run Code Online (Sandbox Code Playgroud)

并像这样更改推送代码

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