I';我无法使用JSON.stringify()在JavaScript中将JSONArray转换为字符串

I';我无法使用JSON.stringify()在JavaScript中将JSONArray转换为字符串,javascript,json,cookies,stringify,Javascript,Json,Cookies,Stringify,我有一个JavaScript对象g g = { vehicles: e.Gc, clicked_vehicle: g, site_url: x.display_config.site_image_url, include_option_prices: !0, selected_options: b.Mf()

我有一个JavaScript对象g

            g = {
                vehicles: e.Gc,
                clicked_vehicle: g,
                site_url: x.display_config.site_image_url,
                include_option_prices: !0,
                selected_options: b.Mf()
            };
            d.lead_data = g;
我正在尝试获取g.U车辆的值,并将其存储在浏览器上的cookie中

            document.cookie = "clicked_vehicle=" + JSON.stringify(g.clicked_vehicle);
g、 clicked_vehicle是一个JSONArray,因此存储在我的浏览器中的clicked_vehicle cookie的值为“[object]”。我原以为JSON.stringify会将JSONArray转换为字符串,但由于某种原因,它不起作用

当我这样做时:

         document.cookie = "selected_options="+ JSON.stringify(g.selected_options);
它起作用,字符串被存储到我浏览器上的cookie中

            document.cookie = "clicked_vehicle=" + JSON.stringify(g.clicked_vehicle);

知道问题出在哪里吗?

我想问题出在这一行:

clicked_vehicle: g
正如Jaromanda X所提到的,这一行可能会导致递归问题,因为您的对象也称为
g

如果您确实需要在
单击的车内存储相同的数据集,您可以这样做:

g = {
  vehicles: e.Gc,
  clicked_vehicle: Object.assign({}, g), // copies g instead of referencing it

看看这对你是否有效。

我想问题出在这一行:

clicked_vehicle: g
正如Jaromanda X所提到的,这一行可能会导致递归问题,因为您的对象也称为
g

如果您确实需要在
单击的车内存储相同的数据集,您可以这样做:

g = {
  vehicles: e.Gc,
  clicked_vehicle: Object.assign({}, g), // copies g instead of referencing it


看看这是否适合你。

g={vehicles:e.Gc,clicked\u vehicle:g,…
看起来是递归的
。clicked\u vehicle是一个JSONArray
-不,它不是。它是一个字符串(可能是数组的JSON符号,也可能不是),或数组-javascript中没有
JSONArray
-根据您发布的代码,
clicked\u vehicle
g
-您认为
g
是什么?或者在您关闭它之前是什么(即,在发布代码之前是什么)点击
的预期结果是什么?
控制台.log(g)
的输出是什么?如果你把它放在你所展示的代码之前,那么
JSON.stringify
将导致
[对象对象]
-它可能最终成为
“[对象]”
-注意引号-这表明g是字符串
[对象对象]
g={vehicles:e.Gc,clicked\u vehicle:g,
看起来是递归的
。clicked\u vehicle是一个JSONArray
-不,它不是。它是字符串(可能是数组的JSON符号,也可能不是),或数组-javascript中没有
JSONArray
-根据您发布的代码,
clicked\u vehicle
g
-您认为
g
是什么?或者在您关闭它之前是什么(即,在发布代码之前是什么)点击
的预期结果是什么?
控制台.log(g)
的输出是什么?如果你把它放在你所展示的代码之前,那么
JSON.stringify
将导致
[对象对象]
-它可能最终成为
“[对象]”
-注意引号-这表明g是字符串
[对象]
我刚试过。不幸的是,它仍然不起作用。@AliciaGuerra你能试一下
控制台吗
g.clicked\u vehicle
的log
看看它会给你带来什么回报吗?当我在Chrome Developer Tools中对g.clicked\u vehicle做控制台日志时,它说g没有定义。它不会再出现-问题是,在这个piec之前是什么我看不出JSON.stringify有什么理由输出
[object object]
-所以OP没有告诉我们一些事情us@AliciaGuerra不…不要在Chrome开发者工具中这样做,而是在你的代码中这样做,即在
控制台.log中添加(g.clicked\u车辆)
,看看这给Chrome开发者工具增加了什么。我刚刚试过。不幸的是,它仍然不起作用。@AliciaGuerra你能试一下
控制台.log
g.clicked\u vehicle
看看它会给你什么回报吗?当我在Chrome开发者工具中对g.clicked\u vehicle做控制台.log时,它会说g没有定义。它不会递归-这个问题是,在那段代码之前,什么是
g
,这就是它将是什么。我看不出JSON.stringify将输出
[object]
-所以OP没有告诉我们一些事情us@AliciaGuerra不…不要在Chrome开发者工具中这样做,而是在你的代码中这样做,即在
控制台.log中添加(g.clicked\u车辆);
,看看这会给Chrome开发者工具增加什么。