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

如何向函数传入JSON并读取其值 附SyntaxError报错排查

报错根因

SyntaxError: Unexpected token u in JSON at position 0的触发逻辑非常明确:

  1. JSON.parse()只接受合法JSON格式字符串作为入参,当传入值为undefined时,JS会先把入参转成字符串"undefined",解析时位置0的首字符是u,完全不符合JSON语法规则,直接抛出解析错误。
  2. 对应代码存在两处逻辑问题:
    • 调用getInformation()时没有传入任何参数,函数内的形参data默认值就是undefined
    • 外层定义的const data = {"name": "John Lemon", "age":44}本身已经是标准JavaScript对象,不是JSON格式字符串,就算调用时正确传入参数,直接执行JSON.parse(data)也会因为对象被转成字符串"[object Object]",触发新的解析错误。
修复方案

根据实际使用场景二选一即可:

场景1:直接操作已定义的JS对象

不需要调用JSON.parse(),调用函数时正确传入对象参数,直接读取属性即可:

const data = {"name": "John Lemon", "age":44}

const getInformation = (obj) => {
  console.log(obj.name)
}

// 调用时传入提前定义的data对象
getInformation(data)
// 运行输出:John Lemon

场景2:需要解析JSON格式字符串

先定义合法的JSON字符串(JSON语法要求键必须用双引号包裹,整体为字符串类型),调用函数时传入该字符串后再执行解析:

// 合法JSON字符串:整体用单引号包裹,内部键值对使用双引号
const jsonData = '{"name": "John Lemon", "age":44}'

const getInformation = (dataStr) => {
  const obj = JSON.parse(dataStr)
  console.log(obj.name)
}

// 传入JSON字符串参数
getInformation(jsonData)
// 运行输出:John Lemon

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:18:15