You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定数据转为JSON对象?JSON.parse报SyntaxError问题咨询

解决JSON.parse()报SyntaxError: Unexpected token o的问题

这个错误我太熟了!你遇到的问题根源特别清晰:你尝试用JSON.parse()去解析一个已经是JavaScript对象的值,而不是JSON格式的字符串。

先拆解下你的代码:

var t = { message: [ { timestamp: 1522007930599, tags: [Array], _id: '5aacb7cc0281b558debacf26', message_link: 'String', __v: 0 }, ] }
var r = JSON.parse(t)

这里的t是一个原生的JavaScript对象,不是JSON字符串。JSON.parse()的核心作用是把JSON格式的字符串转换成JS对象,而你给它传了一个已经是对象的值时,JS会先把这个对象自动转成字符串"[object Object]",再去解析这个字符串——这自然会报错,因为这个字符串开头的o完全不符合JSON的语法规范。

下面分两种场景给你解决方案:

场景1:你本来就需要使用这个JS对象

如果t已经是你需要的目标对象,那根本不需要JSON.parse(),直接用就行:

var t = { message: [ { timestamp: 1522007930599, tags: [Array], _id: '5aacb7cc0281b558debacf26', message_link: 'String', __v: 0 }, ] }
// 直接访问对象属性即可
console.log(t.message[0].timestamp) // 输出1522007930599

场景2:你确实需要从JSON字符串转对象

如果你的数据源本来应该是JSON字符串(比如从后端接口获取、从localStorage读取的内容),那你需要确保t是符合JSON规范的字符串——注意JSON的键必须用双引号包裹,数组最后不要加多余的逗号:

// 符合JSON规范的字符串格式
var t = '{"message": [{"timestamp": 1522007930599, "tags": [], "_id": "5aacb7cc0281b558debacf26", "message_link": "String", "__v": 0}]}'
var r = JSON.parse(t)
console.log(r) // 此时能正常解析为JS对象

最后给你个小技巧:如果不确定变量的类型,可以先用typeof t检查,要是输出"object",那绝对不能用JSON.parse();如果是"string",再检查字符串是否符合JSON的语法要求。

内容的提问来源于stack exchange,提问作者Vinayak Shrivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:09:08