微信小程序调用wx.scanCode遇到中文字符发生JSON.parse解析错误的问题

背景

微信小程序有一个功能需要调用wx.scanCode扫描二维码,获取二维码中的字符串信息,再通过JSON.parse将字符串转换为对象。
比如以下二维码中包含 字符串:
在这里插入图片描述

{“scanType”:“saveCustomerInfo”,“jsonObject”:{“customerCode”:“001”,“customerName”:“中国公司”,“firstLetter”:“T”}}

代码
/**
   * 扫一扫功能:将扫描的信息发往后台进行业务逻辑判断
   */
  getScanCode: function () {
    if (app.globalData.userInfo) {
      wx.scanCode({
        onlyFromCamera: true,
        scanType: ["qrCode", "barCode", "datamatrix", "pdf417"],
        success: (res) => {
          console.log("scan success", res.result);
          //TODO 调用后台逻辑

          this.scan(res.result)
        },
        fail: (res) => {
          console.log("fail", res);
          //app.showInfo("无效二维码");
        },
        complete: () => {},
      });
    } else {
      app.showInfo("正在登录系统");
      wx.navigateTo({
        url: "../index/index",
        success: (result) => {},
        fail: () => {},
        complete: () => {},
      });
    }
  },

   /**调用服务端上传扫一扫信息 */
   scan: function (result) {
    console.log("result", result);
    let res =  JSON.parse(result)
    console.log("res", res);
    if (res.scanType==undefined) {
      app.showInfo("非法扫描信息");
      return;
    }
    const _request = new request();
    _request(
    //业务逻辑处理
    ...
    )
  }  
错误

出现字符串无法转换对象的错误 :
在这里插入图片描述
如果将其中的中文字替换成英文,则解析正常:

{“scanType”:“saveCustomerInfo”,“jsonObject”:{“customerCode”:“001”,“customerName”:“Chinese Company”,“firstLetter”:“T” }}

在这里插入图片描述

如何解决

仔细查看错误提示,描述是因为扫描二维码获取的值,前端有一个空格。用result.trim()去除空格后解决问题。

/**调用服务端上传扫一扫信息 */
   scan: function (result) {
    console.log("result", result);
    let res =  JSON.parse(result.trim())
    console.log("res", res);
    if (res.scanType==undefined) {
      app.showInfo("非法扫描信息");
      return;
    }
    const _request = new request();
    _request(
    //业务逻辑处理
    ...
    )
  }  

在这里插入图片描述

原创文章 56 获赞 8 访问量 4722

猜你喜欢

转载自blog.csdn.net/jpgzhu/article/details/105919414