Как мне решить эту ошибку Javascript при преобразовании JSON в строку? - PullRequest
4 голосов
/ 10 февраля 2011
Uncaught TypeError: Converting circular structure to JSON

Объект, который я пытаюсь структурировать, таков (я зарегистрировал его в консоли 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 ]

7 голосов
/ 10 февраля 2011

Объект ссылается на себя где-то;отсюда и сообщение «круговая структура».Я подозреваю, что это может быть в HTMLDivElement.Вы используете это только для целей отладки или действительно хотите сделать что-то значимое с этим JSON?Если вы просто используете его для отладки, большинство современных отладчиков JavaScript позволят вам просто записать объект на консоль.Если вы на самом деле пытаетесь что-то сделать с данными, вы должны извлечь из этого объекта только те вещи, которые вам нужны, и поместить их в новый обрезанный объект, который вы можете передать JSON.stringify.Этот объект выглядит так, как будто он взят из API Google и содержит много дополнительных данных.

Если вы не возражаете против деструктивной модификации объекта, попробуйте выборочно обнулить подозрительные поля и посмотрите, примет ли объект JSON.stringify.По крайней мере, таким образом, вы будете знать, что вызывает это.Обратите внимание, что если вы сделаете это, вы можете сломать объект для использования в будущем.

2 голосов
/ 19 июля 2012

Была такая же проблема, оказалось, что я идиот и забыл .val () в конце элемента, который я хотел вставить в объект JSON.

Убедитесь, что вы не помещаете целый элемент в объект JSON, иначе он попытается JSON-кодировать что-то, что не является допустимым JSON.

0 голосов
/ 15 апреля 2011

Я бы посмотрел на

html: HTMLDivElement, вероятно, должен брать html элемента, а не сам элемент

или следующие

Object -> proto -> Object -> proto -> Object -> ........

...