JSON.stringify 抛出错误

Posted

技术标签:

【中文标题】JSON.stringify 抛出错误【英文标题】:JSON.stringify throws error 【发布时间】: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 库。 你能分享你写的示例代码吗? 【参考方案1】:

TypeError:将循环结构转换为 JSON

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

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

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

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

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

【讨论】:

Serializing object that contains cyclic object value【参考方案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

以上是关于JSON.stringify 抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

如何删除嵌套的 JSON.stringify() 属性

JSON.stringify()执行出错是如何产生的?

JSON.stringify 抛出 RangeError: Invalid string length for large objects

为啥 TypeError 上的 JSON.stringify 返回一个空对象 [重复]

JSON.parse()和JSON.stringify()

JSON.parse()和JSON.stringify()