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

本文和大家分享的主要是JSON.stringify()执行出错相关内容,一起来看看吧,希望对大家学习json有所帮助。

Uncaught TypeError: Converting circular structure to JSON

这个错误是执行JSON.stringify() 时抛出的异常信息

JSON.stringify()用于将json格式转换为string格式,与JSON.parser()相辅相成。

两种方式会导致该错误:

1、json格式数据存在循环调用。

举个例子:

var obj = {

title: ’标题’

}

obj.content = obj;JSON.stringify(obj);

执行后,控制台将输出:

Uncaught TypeError: Converting circular structure to JSON

at Object.stringify (native)

at <anonymous>:6:6

at Object.InjectedScript._evaluateOn (<anonymous>:875:140)

at Object.InjectedScript._evaluateAndWrap (<anonymous>:808:34)

at Object.InjectedScript.evaluate (<anonymous>:664:21

这是一种错误的编辑方式,我们应该禁止这样进行赋值。

2、json格式数据层级过于复杂。

这种情况在高版本浏览器中可执行,但在一些低版本的浏览器中报错(我是在chrome.40试出来的)。

导致json过于复杂大多数原因是误将DOM或者jQuery对象赋值至json串中了。

为什么会这样?这是由于各类插件在返回数据时,为方便使用会将事件源所在的DOM或jQuery对象一并返回,编码时如果不进行筛选就会造成这种错误。

来源:简书

时间: 07-27

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

浅谈JSON.parse()、JSON.stringify()和eval()的作用

相信大家对于JSON应该不陌生,度娘对这个名词的解释大致如下: “JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使JSON成为理想的数据交换语言,作用是易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).” 今天在这里笔者想简单谈谈jquery里面的JSON.parse()和JSON.stringify()函数,顺便

JSON.stringify()——JS转JSON

JSON.stringify() JSON 通常用于与服务端交换数据. 在向服务器发送数据时一般是字符串. 我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串. 语法 JSON.stringify(value[, replacer[, space]]) 参数说明: value: 必需, 一个有效的 JSON 字符串. replacer: 可选.用于转换结果的函数或数组. 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并

jQ实现JSON.stringify(obj)方法

jQstringify是使用jQuery实现的JSON.stringify(obj)方法 代码如下:<script type="text/javascript" src="http://keleyi.com/keleyi/pmedia/jquery/jquery-1.10.2.min.js"></script> function jQstringify( obj ) {var arr = [];$.each( obj, function( k

JSON.stringify() / JSON.parse()

JSON.stringify() 这个方法可以把javascript对象转换成json字符串. JSON.parse() 这个方法可以把 json 字符串转换成 javascript对象. [下面来看一下这两个方法的详细解答] json数据中没有变量和结尾的分号,并且数据必须是用双引号引起来的,单引号会报语法错误. json的数据格式: { "name":"chef", "child":{ "name1":"chil

JSON stringify and parse

来源 : http://javascript.ruanyifeng.com/stdlib/date.html //解析json也可以传入一个方法, 基本上和stringify差不多,不过是逆序的, 要注意key = "" 的return ,基本上返回 value就好 //自己做一个test比较好理解 function f(key, value) { //console.log(key); //console.log(value); if (key === "") {

js中解析json时候的eval和$.parseJSON()的区别以及JSON.stringify()

1.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?      JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的 如: var str = 'alert(1000.toString())'; eval(str); JSON.parse(str);  用eval可以解析,并

Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语言,作用是易于阅读和编写,同时也易于机器解析和生成(一般用于网络传输速率). 一:JSON.parse(); 作用:将json字符串转换成json对象 语法:JSON. parse(text[,reviver]). 参数: text:必选,一个有效的json字符串. reviver:可选. 返回值:

JSON.parse()和JSON.stringify()的用法

JSON.parse()是用于从一个字符串中解析出json对象,如下所示 var str = '{"name":"flsummer","age":"23"}' JSON.parse(str) 结果:Object {name: "flsummer", age: "23"} 注意:单引号必须写在{}外,每个属性名都必须用双引号,否则会抛出异常. JSON.stringify()用于从一个对象

JSON.stringify(国丰PU3023)

function GridRowOnDblClick(strFile, pkValue, rowIndex) { var obj = getUrlArgs(); var postdata = JSON.stringify( { "value1": obj.CS, "value2": pkValue }); $.ajax({ type: "POST", contentType: "application/json", url: