最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

微信小程序中如何解决wx.request对于JSON含u2028的处理异常

来源:动视网 责编:小采 时间:2020-11-27 19:33:49
文档

微信小程序中如何解决wx.request对于JSON含u2028的处理异常

微信小程序中如何解决wx.request对于JSON含\u2028的处理异常:这篇文章主要介绍了关于微信小程序中如何解决wx.request对于JSON 含\u2028的处理异常,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下问题描述最近在小程序的开发过程中,遇到一个神奇的问题。小程序用于发起网络请求的 API wx.re
推荐度:
导读微信小程序中如何解决wx.request对于JSON含\u2028的处理异常:这篇文章主要介绍了关于微信小程序中如何解决wx.request对于JSON 含\u2028的处理异常,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下问题描述最近在小程序的开发过程中,遇到一个神奇的问题。小程序用于发起网络请求的 API wx.re
 这篇文章主要介绍了关于微信小程序中如何解决wx.request对于JSON 含\u2028的处理异常,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

问题描述

最近在小程序的开发过程中,遇到一个神奇的问题。

小程序用于发起网络请求的 API wx.request 默认会对为 JSON 格式的响应体进行解析,返回 JS Object。

wx.request({
 url: 'test.php', //仅为示例,并非真实的接口地址
 data: {
 x: '',
 y: ''
 },
 header: {
 'content-type': 'application/json' // 默认值
 },
 success: function(res) {
 console.log(res.data)
 }
})

其中 res.data 一般会是 Object 类型。

但是,响应体的 JSON 数据包含了 \\u2028 的字符,就会解释失败,输出的 res.data 是响应体的字符串类型。

样本

测试样本:{“test”:”这里有一个特殊字符:? "}

测试代码:

wx.request({
 ...
 success: (res) => {
 console.log('APIFactory:run', '调试', { res });
 },
});

结果:

  1. 在 开发者工具 中,能正常解析

  2. 在 真机(iOS 和 Android),都解析失败

u2028

该特殊字符就是 \u2028,解析为行分隔符。
该字符,在 JSON 字符串中,是被兼容的,是能被 JSON.parse 正常解析的。
但是 JS 代码中有这个字符串,就会导致运行出错。

为什么真机和开发者工具表现不一致

微信小程序运行在三端:iOS、Android 和 用于调试的开发者工具。
三端的JS脚本执行环境是各不相同的:

  • 在 iOS 上,小程序的 javascript 代码是运行在 JavaScriptCore 中。

  • 在 Android 上,小程序的 javascript 代码是通过 X5 JSCore来解析。

  • 在 开发工具上, 小程序的 javascript 代码是运行在 nwjs 中。

  • 而小程序的逻辑层和视图层,都是通过「WeixinJsBridge」来调用 Native API 的。

    所以问题出在,wx.request 对于响应体的数据处理,到底是在 JS Engine 处理的,还是 Native 处理的,在微信不公开小程序源码的情况下,不得而知。

    wx.request 的处理对于我们来说,相当于黑盒,并且对于 res.data 的数据类型可能值是多种的,如果想在业务上提供更好的健壮性,还需要兼容 res.dataObject/String 类型时的判断和容错代码。

    文档

    微信小程序中如何解决wx.request对于JSON含u2028的处理异常

    微信小程序中如何解决wx.request对于JSON含\u2028的处理异常:这篇文章主要介绍了关于微信小程序中如何解决wx.request对于JSON 含\u2028的处理异常,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下问题描述最近在小程序的开发过程中,遇到一个神奇的问题。小程序用于发起网络请求的 API wx.re
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top