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

为何从QRCodeScanner读取的对象属性访问返回undefined?

解决QRCodeScanner读取数据无法访问内部属性的问题

你遇到的问题根源在于:e.data是JSON格式的字符串,而非JavaScript对象,所以直接通过.访问内部属性会返回undefined。

验证数据类型

先打印e.data的类型确认这一点:

const onSuccess = (e) => {
  console.log(typeof e.data); // 输出应为 "string"
  console.log(e.data);
  setScanData(e.data);
}

解决方案:解析JSON字符串为对象

使用JSON.parse()将字符串转换为可操作的JavaScript对象,之后就能正常访问内部属性:

const onSuccess = (e) => {
  try {
    // 解析JSON字符串
    const parsedData = JSON.parse(e.data);
    // 现在可以正常访问属性
    console.log(parsedData.user);
    console.log(parsedData.user.email);
    console.log(parsedData.user.name);
    // 存储解析后的对象
    setScanData(parsedData);
  } catch (error) {
    console.error('JSON解析失败:', error);
    // 处理数据格式错误的情况
  }
}

补充说明

QRCodeScanner扫描返回的data字段默认是字符串形式的JSON数据,必须经过解析才能转换为JS对象,进而访问其内部属性。如果解析时出现错误,大概率是扫描到的JSON格式不规范,需要检查二维码中的数据是否符合标准JSON格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:45:34