百世创一
百世创一
  • 发布:2024-03-04 16:40
  • 更新:2024-03-16 16:34
  • 阅读:355

【报Bug】一个 JSON 结构达到一个特殊长度,写入缓存在读取出来格式异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.2.1 (23C71)

HBuilderX类型: 正式

HBuilderX版本号: 3.99

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 12

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

和附件一起发送

操作步骤:

使用我提供的附件里的JSON,然后setStorageSync之后,马上getStorageSync就可以看到异常结果

预期结果:

正确的写入 JSON 到缓存,正确的读取缓存到 JSON 结构

实际结果:

从缓存中读出的结构异常

bug描述:

用户报了一个特殊问题,总是导致运行卡住。通过反复测试,发现此用户的JSON 格式数据写入缓存后,在读取出来时,数据内容不对,变成了string类型,同时头部多出了“{"type":"object","data":”,然后后面是JSON的内容“{A:1,B:2......}
导致数据的读取出现问题。
如果我随便修改一个字段,把长度少一位或是多一位,都可以正常处理,正好就在这个长度不行。应该是getStorageSync或是setStorageSync的内部处理有些问题。

2024-03-04 16:40 负责人:DCloud_App_Array 分享
已邀请:

最佳回复

DCloud

DCloud

HBuilderX 4.04.2024031519-alpha 已修复。

YUANRJ

YUANRJ

我这里使用附件里的json测试是正常的,上传个完整的工程吧

百世创一

百世创一 (作者)

我直接工程打包了。您看一下。我仔细查了一下。发现两个问题。

  1. 如果在 3.99 版本,是写入后,读出格式的问题。
  2. 如果在 4.0.1 测试版本,更离谱,大量的字段都是 {},{},{}

您可测试一下。

  • YUANRJ

    收到,这边排查下

    2024-03-07 13:15

  • 百世创一 (作者)

    回复 YUANRJ: 您那边重现了这个问题吗?

    2024-03-08 09:26

  • YUANRJ

    回复 百世创一: 已重现,后续有进展会更新此帖

    2024-03-08 16:02

百世创一

百世创一 (作者)

只要把这个JSON结构加一个字节,或是删除一个字节,在 3.99 版本都看起来没问题了。但是在 4.01 版本还是有问题,感觉是同步写入setStorageSync还未完成,同步读取getStorageSync的数据就开始读,导致信息不完整。

要回复问题请先登录注册