【问题标题】:JSON.stringify throws errorJSON.stringify 抛出错误
【发布时间】:2011-12-27 17:49:20
【问题描述】:
var Products = [
    { id: 0, product: 'Sour Apple', price: 10, count: 1, product_thumb: 'resources/css/apple.png' },
    { id: 1, product: '30 dsfdf', price: 20, count: 1, product_thumb: 'resources/css/croissant.png' },
    { id: 2, product: 'Discount Coffee', price: 30, count: 1, product_thumb: 'resources/css/coffecup.png' },
    { id: 3, product: '30 Donut Combo', price: 40, count: 1, product_thumb: 'resources/css/donut.png' },
    { id: 4, product: 'Invisishield', price: 50, count: 1, product_thumb: 'resources/css/apple.png' },
    { id: 5, product: 'Pink Cupcake', price: 60, count: 1, product_thumb: 'resources/css/icecream.png' },
    { id: 6, product: 'Strawberry Cone', price: 70, count: 1, product_thumb: 'resources/css/softy.png' }
]

我正在尝试将产品数组(上图)编码为 JSON 字符串,但出现以下错误:TypeError: Converting circular structure to JSON

更新(来自评论):

我想要做的是,我声明一个 var product = [];然后当用户将产品添加到购物车时,我会这样做: var productObject = { id: id, product: name, price: price, count: 1, product_thumb: img };用户说完成后,我将数组转换为 json 并将其发送到我的 Web 服务。问题是当我做 JSON.stringify 它给出了那个错误。 product.push(productObject);

【问题讨论】:

  • 你用什么浏览器?您是否使用 JSON 库?
  • 我使用的是 Chrome,我没有使用任何 JSON 库。
  • 你能分享你写的示例代码吗?

标签: javascript json


【解决方案1】:

TypeError:将循环结构转换为 JSON

当您的对象中有循环时会发生此错误。例如:

var obj = {};
obj.a = {b:obj};

如果你浏览 obj,你有那个循环:obj->a->b->obj->...

因此,JSON.stringify(obj) 引发错误。

当您包含 DOM 对象(窗口、文档...)时,也会发生这种错误,因为它们或它们的子对象引用它们(自身)。

【解决方案2】:

什么浏览器?什么环境?只需将您的数据插入 Chrome Inspector,就可以正常工作..

【讨论】:

  • 在 chrome 中试试这个。我的数组包含产品对象。
  • var productObject = { id: id, product: name, price: price, count: 1, product_thumb: img };产品.push(productObject);这是我动态填充对象数组的方式。我上面给出的示例只是为了让对象了解它的外观。
  • 好的,让我用更好的方式解释你。我想做的是,我声明一个 var product = [];然后当用户将产品添加到购物车时,我会这样做: var productObject = { id: id, product: name, price: price, count: 1, product_thumb: img };用户说完成后,我将数组转换为 json 并将其发送到我的 Web 服务。问题是当我做 JSON.stringify 它给出了那个错误。 product.push(productObject);
  • 我的错,我无法解释这个问题。问题是我在 sencha 下使用它.. 我所要做的就是: var arr = []; for (i = 0; i
猜你喜欢
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 2015-05-24
  • 1970-01-01
  • 2015-03-24
  • 2018-08-06
相关资源
最近更新 更多