在开发中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
}
我是用encodeURIComponent(JSON.stringify(data))
和JSON.parse(decodeURIComponent(data))搭配使用
如果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对象,则序列化的结果将只得到空对象。
不会丢失,你是咋看出来他丢失了
我也遇到了