收藏
回答

JSON.stringify()数据丢失问题?

在开发中JSON.stringify()序列化数据,小程序有数据丢失。但是在前端使用了却正常没有问题。

小程序中JSON.stringify()是不是有限制呢?

{
    "id": 0,
    "title": "",
    "cid": 1,
    "sid": 0,
    "did": 0,
    "username": "",
    "mobile": "",
    "uid": "",
    "material": [{
        "id": 2,
        "name": "材料",
        "material": [{ //这个数组的数据丢失了
            "class": {
                "id": 2,
                "name": "材料"
            },
            "material": [{
                "id": 5,
                "name": "材料",
                "addtime": "2023-03-04-03 10:14:28",
                "lasttime": "2023-03-01 16:55:14",
                "class_id": 2,
                "type": "switch",
                "unit": "个",
                "switch": [],
                "option": [],
                "class_sub_id": 0,
                "price": "10.00",
                "is_switch": 0,
                "sort": 50,
                "content": ""
            }, {
                "id": 6,
                "name": "材料",
                "addtime": "2023-03-04-03 10:14:28",
                "lasttime": "2023-03-01 16:55:20",
                "class_id": 2,
                "type": "switch",
                "unit": "个",
                "switch": [],
                "option": [],
                "class_sub_id": 0,
                "price": "20.00",
                "is_switch": 0,
                "sort": 60,
                "content": ""
            }, {
                "id": 7,
                "name": "材料",
                "addtime": "2023-03-04-03 10:14:28",
                "lasttime": "2023-03-01 16:55:25",
                "class_id": 2,
                "type": "switch",
                "unit": "",
                "switch": [],
                "option": [],
                "class_sub_id": 0,
                "price": "30.00",
                "is_switch": 0,
                "sort": 70,
                "content": ""
            }, {
                "id": 8,
                "name": "材料",
                "addtime": "2023-03-04-03 10:14:28",
                "lasttime": "2023-03-01 16:55:30",
                "class_id": 2,
                "type": "switch",
                "unit": "个",
                "switch": [],
                "option": [],
                "class_sub_id": 0,
                "price": "50.00",
                "is_switch": 0,
                "sort": 80,
                "content": ""
            }],
            "sub": false
        }]
    }, {
        "id": 6,
        "name": "材料",
        "material": []
    }, {
        "id": 11,
        "name": "材料",
        "material": []
    }, {
        "id": 12,
        "name": "材料",
        "material": []
    }, {
        "id": 13,
        "name": "材料",
        "material": []
    }],
    "price": 110
}
回答关注问题邀请回答
收藏

2 个回答

  • 红薯
    红薯
    2023-03-04

    我是用encodeURIComponent(JSON.stringify(data))

    JSON.parse(decodeURIComponent(data))搭配使用


    2023-03-04
    有用 2
    回复 2
    • 微派蓝色雪狐
      微派蓝色雪狐
      2023-03-04
      JSON.stringify   使用这个是的时候,数据已经丢失了。查找了半天的,一直不知道问题所在
      2023-03-04
      回复
    • 李庆亮
      李庆亮
      2023-06-20回复微派蓝色雪狐
      使用JSON.parse(JSON.stringify())进行深拷贝 有哪些弊端
      如果obj里有函数,undefined,则序列化的结果会把函数, undefined丢失。
      如果obj里面存在时间对象,JSON.parse(JSON.stringify(obj))之后,时间对象变成了字符串。
      如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null。
      JSON.stringify()只能序列化对象的可枚举的自有属性。如果obj中的对象是有构造函数生成的,则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor。如果对象中存在循环引用的情况也无法正确实现深拷贝。
      如果obj里有RegExp、Error对象,则序列化的结果将只得到空对象。
      2023-06-20
      1
      回复
  • showms
    showms
    2023-03-04

    不会丢失,你是咋看出来他丢失了

    2023-03-04
    有用
    回复 7
    • 微派蓝色雪狐
      微派蓝色雪狐
      发表于移动端
      2023-03-04
      代码是我全部的数据,使用序列化后会丢失一部分数据
      2023-03-04
      回复
    • showms
      showms
      2023-03-04回复微派蓝色雪狐
      如果你是console.log这种打印出来太长的话是会显示不全。但是不影响
      2023-03-04
      回复
    • 微派蓝色雪狐
      微派蓝色雪狐
      2023-03-04
      直接打印可以没有问题。但如果是console.log(JSON.stringify(data)),就丢失数据了。一个奇怪的问题啊!
      2023-03-04
      回复
    • showms
      showms
      2023-03-05回复微派蓝色雪狐
      console.log丢失没影响,可能是打印内容太长,
      2023-03-05
      回复
    • 我爱吃百香果
      我爱吃百香果
      2023-12-09回复微派蓝色雪狐
      解决了吗
      我也遇到了
      2023-12-09
      回复
    查看更多(2)
登录 后发表内容