将JSON转换为字符串时如何解决此Javascript错误?

时间:2011-02-10 06:56:01

标签: javascript jquery string json parsing

Uncaught TypeError: Converting circular structure to JSON

我正在尝试stringify的对象是这个(我在javascript控制台中记录):

Object
GsearchResultClass: "GlocalSearch"
accuracy: "8"
addressLines: Array[2]
city: "Cupertino"
content: ""
country: "United States"
ddUrl: "http://www.google.com/maps?source=uds&daddr=10825+North+Wolfe+Road,+Cupertino,+CA+(Southland+Flavor+…"
ddUrlFromHere: "http://www.google.com/maps?source=uds&saddr=10825+North+Wolfe+Road,+Cupertino,+CA+(Southland+Flavor+…"
ddUrlToHere: "http://www.google.com/maps?source=uds&daddr=10825+North+Wolfe+Road,+Cupertino,+CA+(Southland+Flavor+…"
html: HTMLDivElement
lat: "37.335405"
listingType: "local"
lng: "-122.015386"
maxAge: 604800
phoneNumbers: Array[1]
region: "CA"
staticMapUrl: "http://maps.google.com/maps/api/staticmap?maptype=roadmap&format=gif&sensor=false&size=150x100&zoom=…"
streetAddress: "10825 North Wolfe Road"
title: "Southland Flavor Cafe"
titleNoFormatting: "Southland Flavor Cafe"
url: "http://www.google.com/maps/place?source=uds&q=stinky&cid=9384294304761453216"
viewportmode: "computed"
__proto__: Object

我这样做:

JSON.stringify(theobject);

3 个答案:

答案 0 :(得分:7)

一个对象在某个地方引用自己;因此消息“循环结构”。我怀疑它可能在HTMLDivElement。您是仅将此用于调试目的还是实际上想要使用此JSON做一些有意义的事情?如果您只是将它用于调试,那么大多数现代JavaScript调试器都会让您将对象记录到控制台。如果您实际上尝试对数据执行某些操作,则应仅从此对象中提取所需内容,并将它们放入可以传递给JSON.stringify的新修剪对象中。该对象看起来像是来自Google API并且其中包含大量额外数据。

如果您不介意破坏性地修改对象,请尝试选择性地清空可疑字段并查看JSON.stringify是否接受该对象。至少那样你就会知道是什么导致了它。请注意,如果这样做,您最终可能会破坏该对象以供将来使用。

答案 1 :(得分:2)

如果遇到同样的问题,原来我是个白痴,忘记了我想插入JSON对象的元素末尾的.val()。

确保您没有将整个元素推入JSON对象,否则它将尝试对无效JSON的内容进行JSON编码。

答案 2 :(得分:0)

我会看下面的

html:HTMLDivElement应该采用元素的html而不是元素本身

或以下

  

对象 - > proto - >对象 - > proto - >对象 - > ........