2***@qq.com
2***@qq.com
  • 发布:2020-07-24 09:05
  • 更新:2020-07-24 10:27
  • 阅读:1016

uniCloud 返回数据过大的bug

分类:uniCloud

反馈一个Bug,在微信小程序真机里,调用uniCloud云函数,返回较大的数据,大概20-30个字段,2-3层嵌套,会报以下错误。在h5端以及小程序开发工具端都没问题。可以正常识别为JSON数据,但是微信小程序真机不行,我把返回数据减半就没问题了。复制返回数据保存为json文件,也大概是2K以内。
再次测试了一下,我把返回数据中的一个字段的中文字符串,大概200多个汉字清空,返回又正常了,加上去就不行,是不是可以说明返回数据过大造成的?

(in promise) MiniProgramError [user-center]: response data must be json Error: [user-center]: response data must be json at (common/vendor.js:2090:1)

2020-07-24 09:05 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

我换了段中文字符串,比以前更多。又能正常返回了,难道以前的中文字符串有敏感字,在小程序里被拦截了????
头大了

2***@qq.com

2***@qq.com (作者)

找到原因了,在这句话:完成交易后
,自动付款。 “后”字后面有个PS码,造成无法识别为JSON数据。开发人员可以复制这段代码到hx里面去看到PS码符号。

2***@qq.com

2***@qq.com (作者)

这个PS码符号,我都不知道是怎么来的,也不知道是什么意思,如果可以导致小程序里返回数据无法识别为JSON,那么这个PS码也可以做很多坏坏的事啊

2***@qq.com

2***@qq.com (作者)

这个PS码在unicode中是段落分隔符,返回的时候包含在里面导致无法识别为JSON数据,uniCloud的返回数据时要考虑过滤这些,不然,这个bug让人疯掉,我找了好久好久好久。

2***@qq.com

2***@qq.com (作者)

\u2028 行分隔符
\u2029 段落分隔符
这两个unicode码都会导致返回出错,应该过滤掉。至少在字符串中包含这两个码会导致出错。

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

这个数据你是怎么插入的

  • 2***@qq.com (作者)

    在sketch排版时,手动输入的模板文本,写界面时,复制到input输入框,保存上传,调用就出错了。怎么输入的不重要,重要的是没有过滤掉这些特殊的隐藏字符,毕竟还有很多可能性会输入这种字符。

    2020-07-24 20:02

  • DCloud_uniCloud_WYQ

    回复 2***@qq.com: 试了一下应该是微信小程序的Bug,我去逛逛微信的社区看看

    2020-07-25 11:53

  • DCloud_uniCloud_WYQ

    回复 2***@qq.com: https://developers.weixin.qq.com/community/develop/doc/0000eed41dcbc05780a7acc1951000?highLine=json%2520unicode

    2020-07-25 12:03

  • 2***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 2年多了还没解决。。。看来他们不会理了。

    说到字符问题,今天还发现HX有个bug,在HX里面,编辑.gitignore排除文件,git add的时候无法识别第二行之后的排除项,因为HX默认的换行符造成的。这个问题害我来回删库好几遍折腾了几个小时,最后偶然间用vim打开才发现,原来又是换行符的问题。

    2020-07-25 22:28

该问题目前已经被锁定, 无法添加新回复