在微信小程序页面直接传数组,使用了 JSON.stringify 将数组转换成 JSON 字符串,然后准备使用 JSON.parse 将该字符串重新转换成数组。结果不知咋滴转不回来了。

说不定你认为的数组不是数组,字符串不是字符串呢?
给出详细错误记录,才好定位问题

参考提问指南:
https://0xffff.one/d/93

    有可能是两个原因
    1.页面跳转传参没传过去
    2.因为JSON 不允许包含函数,所以 JSON.stringify()不能处理有函数的数组,虽然说也很少数组里放函数吧hhh

    楼主问题也没描述清楚问题
    我之前写项目的时候在README有比较详细地记录过这个知识点,里面也有示例代码,可以戳
    https://github.com/JasonLam0990/SCNUOnline

      JasonLam (1)感谢解决了传数组下标过去的问题;
      (2)传数组过去还是我之前的问题,我在B页面可以接收到 JSON.stringify 将数组转换成的字符串,但 JSON.parse 无法将字符串转回数组形式。打印显示数组的数据都变成 [object, Object]。
      (3)好吧,其实可以通过在B页面重新向后台请求数据解决,但就是想知道数组怎么传过去

      0x0001 数组确是数组,字符串确是字符串,但JSON.parse 无法将字符串转回数组形式。打印显示数组的数据都变成 [object, Object]。

        我觉得问题在于你数组里的元素到底是什么。

        0x101
        脑补不出来。。。[object, Object] 一般是 Object 类型调用 toString 默认出现的,怕是有一些类似 object + '' 之类的操作。
        一般方法是理清楚数据的整个链条,然后通过一步步测试来缩小范围,就像找电缆哪个部分断了一样。

        如果判断始终有问题的话,可能是楼主用来缩小范围的判断依据本身不妥。

        突然想到一个问题,楼主你是怎么输出变量的,是 console.log(),还是其它方法?数组变成字符串会自动给每个非字符串元素转换成字符串,Object 类型衍生出来的对象则会调用 toString 方法。

          0x0001 (1)打印方法,js里面写了console.log(),wxml里面<view>arr<\view>
          (2)明天再把代码贴出来,今天已经更新了(3)的方法
          (3)我已经打算放弃传数组了,在B页面再次请求后台也行。

            0x101 wxml 的模板语法里面包含输出 JS 的地方,在背后自然也是会先把它转换为字符串再输出。

              0x0001 说出来我也不信,刚刚打算重现之前的错误方法(因为之前已经删了,打算重新请求后台),居然就没问题了。“这居然可以运行”的真实写照

              0x101 也就是我在楼上说的调试输出的方式的问题了,这里你用的是字符串的拼接。

              参考《JavaScript高级程序设计》关于 + 运算符的解释:

              console.log 可以接收多个参数的,所以不用 + 号,参考 MDN 文档:
              console.log - Web API 接口参考 | MDN

              主要是把所有的环节都理清楚,有两个以上因素混在一起就晕了。。

                2 个月 后

                © 2018-2025 0xFFFF