javascript - 序列化/反序列化 JavaScript 对象时出现 "Invalid character"错误消息

标签 javascript json

我有下面的函数来“克隆”一个对象。有时我们会看到浏览器控制台中显示“无效字符”错误消息。基于documentation对于 JSON 对象,此函数应该可以完美运行。我还检查了,正在序列化的对象没有实现 toJSON()功能。什么样的对象会导致此错误?

function deepCopy (obj) {
    return JSON.parse(JSON.stringify(obj));
}

更新:它似乎只发生在 IE11 上。

最佳答案

JSON.stringify(undefined) 返回 undefined 而不是字符串“undefined”。如MDN所示:

JSON.stringify can also just return undefined when passing in "pure" values like JSON.stringify(function(){}) or JSON.stringify(undefined).

JSON.parse 在收到不可序列化对象时会出现一些不清楚的错误消息,因为它会首先尝试将此对象转换为字符串。我曾经在 Chrome 中为此浪费了很多时间:JSON 中位置 0 处出现意外的标记 u

这是因为 u 是 undefined 转换为字符串的第一个字母。尝试解析对象时会出现类似的错误,该错误会为字符串“[object Object]”提供有效的左括号,但后面会出现意外的标记o。最好记住这些情况。

关于javascript - 序列化/反序列化 JavaScript 对象时出现 "Invalid character"错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177623/

相关文章:

javascript - 在无限循环风格的展示中预加载相邻条目

Javascript 或 jQuery 获取Processingjs 变量?

ios - 如何将图像数组转换为字符串

java - 从 JsonObject 中提取所有名称元素

javascript - 将 Json 保存在 Javascript 变量中

javascript - 展平数组? [].concat(...[数组])?

javascript - 在对象数组中查找完全相同对象的索引的最佳方法(键是动态的)

javascript - 在 Nodejs 中管理大量回调递归

ios - 使用 swift 在 Alamofire 中发送带有对象数组作为参数的 JSON

jquery - 使用 JSON