解决 SyntaxError:Unexpected end of JSON input 或 Unexpected token u i ...

打印 上一主题 下一主题

主题 853|帖子 853|积分 2559

1、报错原因
  1. JSON 接收的数据不完整,或者数据格式不符合要求,如 undefined
复制代码
2、JSON 数据格式要求 
  1. 1、JSON文件都是被包裹在一个大括号中 {},通过key-value的方式来表达数据。
  2. 2、JSON的Key必须包裹在一个双引号中,在实践中,编写 JSON 的时候,忘了给 Key 值加双引号或者是把双引号写成单引号是常见错误。
  3. 3、JSON的值只能是以下几种数据格式,其他任何格式都会触发报错,例如 JavaScript 中的 undefined。
  4.     1)数字,包含浮点数和整数
  5.     2)字符串,需要包裹在双引号中
  6.     3)布尔值,true 或者 false
  7.     4)数组,需要包裹在方括号中 []
  8.     5)对象,需要包裹在大括号中 {}
  9.     6)null
  10.     7)其它类型,如日期,(JSON)本身不支持,应该由解析器/客户端处理转换为字符串
  11. 4、对象或数组每个成员后面必须跟一个逗号,如果它不是最后一个的话
  12. 5、JSON.parse() 不允许用逗号作为结尾
复制代码
3、解决方法
  1. 对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码,接收时,先通过decodeURIComponent解码再通过JSON.parse转换为JSON格式的对象/数组
复制代码
  1. // 跳转页面传输数据
  2.   toChildrenDetails(e) {
  3.     let data = e.currentTarget.dataset.info
  4.     if (data) {
  5.       var info = {
  6.         name: data.name,
  7.         sex: data.sex,
  8.         href: data.face_image,
  9.         number: data.number,
  10.         age: data.age
  11.       }
  12.       wx.navigateTo({
  13.         url: './children-details/children-details?data=' + encodeURIComponent(JSON.stringify(info))
  14.       })
  15.     } else {
  16.       wx.showToast({
  17.         title: '数据为空!',
  18.         icon: 'none'
  19.       })
  20.     }
  21.   },
复制代码
  1. // 接收数据
  2. onLoad: function (options) {
  3.   this.setData({
  4.     info: JSON.parse(decodeURIComponent(options.data))
  5.   })
  6. },
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表