一开始我没有清楚地解释我的问题。在python中将json转换为字符串时,请尝试使用str()和json.dumps()。...jsonValue”, “title”: “hello world”}’ >>> str(data) “{‘jsonKey’: ‘jsonValue’, ‘title’: ‘hello world’}” 我的问题是...(data) ‘{“jsonKey”: “jsonValue”, “title”: “hello world\'”}’ >>> 我的预期输出: “{‘jsonKey’: ‘jsonValue’,’title...title”: “hello world\\””}’ >>> str(data) ‘{\’jsonKey\’: \’jsonValue\’, \’title\’: \’hello world”\’}’ 我的预期输出...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
JSON.stringify大家已经不陌生了,是一个将json对象转换为字符串的方法。但是如果你在浏览器控制台中输出 JSON.stringify(window)....事实上, 会输出结果如下: VM211:1 Uncaught TypeError: Converting circular structure to JSON at JSON.stringify...(anonymous>) at anonymous>:1:6 上面的错误信息告诉我们, 对象中存在循环引用....所以,便有了如下解决方案: var o = {}; o.o = o; // 声明cache变量,便于匹配是否有循环引用的情况 var cache = []; var str = JSON.stringify...字符串化循环引用的问题。
比如说,它无法处理函数、undefined、Symbol 等特殊类型的数据,这些数据在转换成 JSON 字符串时会被忽略掉。此外,如果对象中存在循环引用,JSON.stringify 也会报错。...6、包装对象处理:自动转换为原始值 在使用 JSON.stringify 时,有一个很重要的特性是,布尔值、数字和字符串的包装对象在序列化时会自动转换为它们对应的原始值。...处理 Map、Set 等对象 类似地,对于 Map、Set 等对象,JSON.stringify 也只会序列化它们的可枚举属性,而这些对象的特殊数据结构本身不会被直接序列化。...循环引用的问题 当对象存在循环引用时,JSON.stringify() 会抛出错误,因为 JSON 不支持循环结构。...形成了一个循环引用,这导致 JSON.stringify() 在处理时抛出了 TypeError 错误。
// "["aaa",null,null,null,"eee"]" 正如我们在第一特性所说,JSON.stringify()序列化时会忽略一些特殊的值,所以不能保证序列化后的字符串还是以特定的顺序出现(...布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值,跟Date一样。...:比如现在我们要说的循环引用问题。...// 对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。...(anonymous>) at deepClone (anonymous>:9:26) at anonymous>:11:13 */ 对包含循环引用的对象(对象之间相互引用,形成无限循环
写在前面 前几天看到前端胖头鱼的一篇文章《就因为JSON.stringify,我的年终奖差点打水漂了》,讲的就是JSON.stringify在工程开发中的应用,线上用户不能提交表单。...JSON.stringify() JSON.stringify是日常开发中经常用到的JSON对象中的一个方法,用于将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer...注意: 循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。...undefined、任意的函数以及symbol值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。...()》 《就因为JSON.stringify,我的年终奖差点打水漂了》 写在最后 我们平时开发中将JSON.stringify应用最多的可能就是浅层的对象进行深拷贝,也就是进行序列化处理。
说到 javascript 中的对象拷贝,首先我们想到的是 Object.assign() , JSON.parse(JSON.stringify()) , 还有 ES6 的展开操作符[... ] 因为在...,把对象结构弄再稍微复杂些再看 var x = { a: 1, b: 2, c: { d: 3, }, }; y = Object.assign({}, x); x.a = 5...(JSON.stringify()) 解决浅拷贝的坑 var x = { a: 1, b: 2, c: { d: 3, }, }; y = JSON.parse(JSON.stringify...(JSON.stringify(x)); console.log(x); /* Uncaught TypeError: Converting circular structure to JSON...at JSON.stringify (anonymous>) at anonymous>:8:25 */ 报错了,其结果表明 JSON.parse(JSON.stringify()) ,
简单来说,JSON.stringify() 就是将值转换为相应的 JSON 格式字符串。...JSON.stringify([undefined, Object, Symbol("")]); // '[null,null,null]' 一种是非数组对象,在序列化的过程中会被忽略。...(anonymous>) at anonymous>:1:6 以 symbol 为属性键的属性,慎用 所有以 symbol 为属性键的属性都会被完全忽略掉,即便 replacer 参数中强制指定包含了它们...":"25"} 总结 JSON.stringify 在实际应用中确实很方便的解决了我们很多问题,比如简单的深拷贝等。...但是我们在使用时候,也需要知道它有哪些不足之处,在目标值可能是一些特殊值的情况下,可能序列化后的结果会不符合我们的预期,这个时候就需要慎用。
简单来说,JSON.stringify() 就是将值转换为相应的 JSON 格式字符串。...值会被转换成 null JSON.stringify([undefined, Object, Symbol("")]); // '[null,null,null]' 一种是非数组对象,在序列化的过程中会被忽略...(anonymous>) at anonymous>:1:6 以 symbol 为属性键的属性,慎用 所有以 symbol 为属性键的属性都会被完全忽略掉,即便 replacer 参数中强制指定包含了它们...(person)) // {"age":"25"} 总结 JSON.stringify 在实际应用中确实很方便的解决了我们很多问题,比如简单的深拷贝等。...但是我们在使用时候,也需要知道它有哪些不足之处,在目标值如果是一些特殊值的情况下,可能序列化后的结果会不符合我们的预期,这个时候就需要慎用 参考 JSON.stringify converting Infinity
的理解 什么是JSON JSON是Douglas Crockford[1]发明的一种数据结构。...JSON.stringify的怪异行为 在JavaScript中,通过JSON.stringify将值转换为JSON字符串。...对于JSON支持的类型的值,它们会被转换为预期的字符串: JSON.stringify(1) // '1' JSON.stringify(null) // 'null' JSON.stringify('...另一种情况时,当传递循环对象时,JSON.stringify会抛出错误。大多数情况下,JSON.stringify是相当宽容的。...它不会因为你违反了JSON的规则而使你的程序崩溃(除非是BigInt或循环对象)。
在写Tab组件持久化功能时: localStorage.setItem('tabs',JSON.stringify(tabs)) 遇到如下的报错: 看意思应该是产生了循环引用的结构,经查阅资料和实践做个记录...以下是不同浏览器对于这个类型错误报出错的形式: TypeError: cyclic object value (Firefox) TypeError: Converting circular structure...to JSON (Chrome and Opera) TypeError: Circular reference in value argument not supported (Edge) 举个例子...既然是由于循环引用导致的,那我们可以在发生循环引用的地方给切断。 那如何切断呢?...幸好JSON.stringify方法提供了便利,语法如下: JSON.stringify(value[, replacer[, space]]) replacer可以作为一个函数传入,且接受key和value
JSON.stringify是我们经常用到的的一个方法,它主要作用是将 JavaScript 值和对象转换为字符串。...对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误 我认为 JSON.stringify 能够返回字符串以外的东西是挺惊讶的。...JSON.stringify 也可能遇到问题,导致它抛出一个错误。在正常情况下,有四种情况会发生: 循环引用会导致抛出一个类型错误。...const b = { a }; a.b = b; JSON.stringify(a); // => TypeError: cyclic object value 注意,这些错误消息在不同浏览器可能提示是不样的...处理循环引用 根据个人经验,JSON.stringify 在传递循环引用时最容易出错。如果这对你来说是一个常见的问题,我推荐 json-stringify-safe 包,它能很好地处理这种情况。
vue.js:1906 TypeError: Cannot read property 'get' of undefined 添加: 下面这种方法,是针对vue的,文件名是vue才行,文件后缀是html的不行; 输入:npm install...vue-resource --save 安装完毕后,在main.js中导入,如下所示: import VueResource from 'vue-resource' Vue.use(VueResource...Visual Studio Code如何调试代码 JSON.parse() 方法将一个 JSON 字符串转换为对象 JSON.stringify() JavaScript值(对象或者数组)转换为JSON...字符串 解决:let rs = JSON.parse(JSON.stringify(res.body)); fastjsonlist转json
了解一下 JSON.stringify 其实,这个bug主要是因为胖头对JSON.stringify不熟悉造成的,所以,这里我们就一起来分析一下这个内置函数的一些特点。...基本上,JSON.stringify() 方法将 JavaScript 对象或值转换为 JSON 字符串: 同时,JSON.stringify 有以下规则。...2、 Boolean、Number、String 对象在字符串化过程中被转换为对应的原始值,符合传统的转换语义。...7、 所有其他 Object 实例(包括 Map、Set、WeakMap 和 WeakSet)将仅序列化其可枚举的属性。 8、找到循环引用时抛出TypeError(“循环对象值”)异常。...9、 尝试对 BigInt 值进行字符串化时抛出 TypeError(“BigInt 值无法在 JSON 中序列化”)。 自己实现 JSON.stringify 理解一个函数的最好方法是自己实现它。
[bmuwt4me9c.gif] 点击上方蓝色字体,关注我们 最近使用 Vue 写后台管理系统,在做 Tab 组件的持久化时遇到一个问题: localStorage.setItem('tabs',JSON.stringify...(tabs)) 上面代码报错: [f0np2w3fta.png] 看意思应该是产生了循环引用的结构,下面是不同浏览器对于这个类型错误报出错的形式: TypeError: cyclic object value...(Firefox) TypeError: Converting circular structure to JSON (Chrome and Opera) TypeError: Circular reference...既然是由于循环引用导致的,那我们可以在发生循环引用的地方给切断。 那如何切断呢?...幸好 JSON.stringify 方法提供了便利,语法如下: JSON.stringify(value[, replacer[, space]]) replacer 可以作为一个函数传入,且接受 key
❞ 看完本文您可以收获: 了解一个差点让我年终奖打水漂的悲伤的故事o(╥﹏╥)o 学习JSON.stringify的9大特性和转换规则 「(重点)」 了解如何判断一个对象是否存在循环引用 「(重点)」...学透JSON.stringify ❝JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的...异常[2] 当在循环引用时会抛出异常TypeError ("cyclic object value")(循环对象值) 当尝试去转换 BigInt 类型的值会抛出TypeError ("BigInt value...)) // undefined console.log(JSON.stringify(Symbol('前端胖头鱼'))) // undefined 特性二 ❝布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值...) console.log(JSON.stringify(alsoHuge)) // TypeError: Do not know how to serialize a BigInt 手写一个JSON.stringify
你以为完了,结果面试真的完犊子了,其实还有一个就是在 ES6 中,还新增了一个叫做: Symbol 什么意思呢?表示唯一,独一无二的值,最大的用法是用来定义对象的唯一属性名。...TypeError: Symbol is not a constructor at new Symbol (anonymous>) at anonymous>:1:9 不能使用...JSON.parse,JSON.stringify 进行深拷贝 var Ken = Symbol('kk') var obj = {name: Ken} var copy = JSON.parse(JSON.stringify...let Ken1 = Symbol("KK"); Ken === Ken1; // false 作为对象属性 key 时,在获取其值的时候,只能使用 [] 形式获取,不能使用 ....但是不会出现在 for...in 、 for...of 的循环中,也不会被 Object.keys() 、 Object.getOwnPropertyNames() 返回。
本文将详细介绍 JSON.stringify() 的属性、应用场景,并提供一个完整而优雅的实现,处理循环引用、特殊类型(如日期和正则表达式)以及性能相关的问题。...应用场景 JSON.stringify() 在以下场景中非常有用: a....数据存储 如果需要将 JavaScript 对象保存到本地存储(如浏览器的 LocalStorage 或数据库),可以使用 JSON.stringify() 将对象转换为 JSON 字符串后进行存储。...建议在实际使用中参考第三方库或更全面的文档和资源。 4. 注意事项 在使用 JSON.stringify() 时,需要注意以下事项: a....记住,JSON.stringify() 是处理 JSON 数据的强大工具,但在特殊情况下需要特别小心,确保正确处理特殊类型和避免循环引用的问题。
//注意目标对象不能为null或undefined Object.assign(null); // TypeError: Cannot convert undefined or null to...: Cannot convert undefined or null to object //当为数组时,会将数组先转换为对象,将下标转换为键,然后进行对象合并 Object.assign([2,3],...(JSON.stringify())的深拷贝 虽然这种方法可以成功实现嵌套属性的深拷贝,但是也有许多弊端。...JSON.stringify()方法将对象转化为字符串,但只会处理简单属性和简单属性数组,constructor属性丢失了 如果obj里面有时间对象,则JSON.stringify后再JSON.parse...如果对象中存在循环引用的情况也无法正确实现深拷贝; 4.自定义对象数组深拷贝 function deepClone(obj) { if (typeof obj !
这是JS 原生方法原理探究系列的第八篇文章。本文会介绍如何实现 JSON.stringify() 方法。 JSON.stringify() 可以将对象或值转化为 JSON 字符串。...检测循环引用 循环引用指的是对象的结构是回环状的,不是树状的: // 下面的对象/数组存在循环引用 let obj = {}; obj.a = obj; let obj1 = { a: { b: {}...') } } }) console.log('不存在循环引用') } 在 JSON.stringify 的实现中,遍历 key 的过程已经在主代码完成了...在整个过程中不需要去处理 JSON 字符串中的逗号分隔符。...最后,我并没有实现 JSON.stringify() 中的 replacer 参数和 space 参数,感兴趣的读者可以在上面代码的基础上进一步拓展。 本文到此结束,感谢你的阅读。
领取专属 10元无门槛券
手把手带您无忧上云