一、问题描述
使用 JSON.parse 反序列化,出现数据丢失现象。
字符串json数据:
{
"varImageList": [
{
"variationValue": "Black ",
"imageList": [
{
"variationValue": "Black ",
"image_base64": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAB/20210713_11ca63ca7457a70070587ee7f2b30e1b.jpg",
"image_url": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAB/20210713_11ca63ca7457a70070587ee7f2b30e1b.jpg",
"imageAddress": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAB/20210713_11ca63ca7457a70070587ee7f2b30e1b.jpg",
"image_address": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAB/20210713_11ca63ca7457a70070587ee7f2b30e1b.jpg",
"type": "image/jpeg"
}
]
},
{
"variationValue": "Gray ",
"imageList": [
{
"variationValue": "Gray ",
"image_base64": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/20211124_4559fbad3a4e4b5c3a8b2383135334a6.jpg",
"image_url": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/20211124_4559fbad3a4e4b5c3a8b2383135334a6.jpg",
"imageAddress": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/20211124_4559fbad3a4e4b5c3a8b2383135334a6.jpg",
"image_address": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/20211124_4559fbad3a4e4b5c3a8b2383135334a6.jpg",
"type": "image/jpeg"
}
]
},
{
"variationValue": "Brown ",
"imageList": [
{
"variationValue": "Brown ",
"image_base64": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAR/20210713_885a0dd07f764f10f8d4e565db4f215d.jpg",
"image_url": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAR/20210713_885a0dd07f764f10f8d4e565db4f215d.jpg",
"imageAddress": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAR/20210713_885a0dd07f764f10f8d4e565db4f215d.jpg",
"image_address": "https://b2bfiles1.gigab2b.cn/image/wkseller/8658/WF212761AAR/20210713_885a0dd07f764f10f8d4e565db4f215d.jpg",
"type": "image/jpeg"
}
]
}
]
}
JSON.parse 序列化后结果:
{
"varImageList": [
{
"variationValue": "Black",
"imageList": []
},
{
"variationValue": "Gray",
"imageList": []
},
{
"variationValue": "Brown",
"imageList": []
}
]
}
imageList 数据丢失。
使用 eval 反序列化,数据正常;
var json = eval('(' + strJson + ')');
二、产生原因
这是因为 JSON.parse 对 json字符串数据要求比较严格。像上面数据丢失原因,就是因为属性值后缀有空字符导致的。使用 trim() 方法去除两边空字符即可;