Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在json中插入javascript变量值_Javascript_Json - Fatal编程技术网

在json中插入javascript变量值

在json中插入javascript变量值,javascript,json,Javascript,Json,我有一个JSON变量,如下所示: {"events": [ {"event_id": "1", "event_name": "Breakfast"}, {"event_id": "1", "event_name": "Calling Bob"} ]}; 我有两个梦想 x=2; y=jam; 我想推送json中的变量,使x是event_id,y是event_name,这样我的json看起来像- {"events": [ {"event_id": "1", "event_name": "Brea

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

{"events": [
{"event_id": "1", "event_name": "Breakfast"},
{"event_id": "1", "event_name": "Calling Bob"}
]};
我有两个梦想

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的变量。
iam正在解析变量san并应用推送操作并将其字符串化并显示,但结果是我的json数据语法发生了变化,就像json中生成了额外的“/”符号一样。

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的同义词,它只是表示对象数据的一种方式,而不仅仅是任何数据,JSON不能表示递归对象。

这对您有用吗

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

变量值在此处缺少引号

x=2; y='jam';
然后像这样更改推送代码

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

这是这个问题的解决方案

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);

不要构建自己的JSON字符串,在实际对象和数组上使用
JSON.stringify()
JSON.parse()
方法(请参阅)。加上
()
,这些是什么?一等公民?这意味着他们“存在”,他们被浏览器中的JavaScript引擎识别。请不要使用JSON作为对象的同义词。JSON是一种字符串序列化格式。如果它不是字符串,那么首先就不能是JSON。为什么要使用
JSON.parse()
“避免”?如果你需要它,你就使用它;说避免是不好的“建议”。@AndréPena JSON对象是浏览器中固有的对象,它有
parse
stringify
等方法<代码中的code>k是一个非常常规的JS对象,也称为“对象初始值设定项”或“对象文字”,它与JSON无关。它将作为字符串推送,
x
y
只是,
x
y
,而不是变量值;我得到了不必要的/符号。要查看控制台结果,请转到链接,按F12,然后单击JSFIDLE run按钮,并在inspect element控制台中显示结果