gpt4 book ai didi

javascript - JSON.stringify()不能按预期工作

转载 作者:行者123 更新时间:2023-12-01 02:35:09 24 4
gpt4 key购买 nike

我已经使用过JSON.stringify()很多次了,并且我知道一些问题,例如(here中所述):


周期
太深的物体
数组太长


但是,我面对这样的对象不正确的字符串化操作:


在控制台上运行JSON.stringify(obj)后,我明白了。

"[{"$$hashKey":"object:103",
"ProductCategories": [{"Id":2,"ShopProductCategoryName":"Drink","isSelected":true}
{"Id":3,"ShopProductCategoryName":"Food","isSelected":true}]
}]"


它只对 ProductCategories$$hashKey进行字符串化,这完全是意外的。



解决尝试

如果我从 obj创建新对象并将其字符串化,则返回正确的JSON。

var newObj = { // Creates new object with same properties.
AllProductCategories: obj.AllProductCategories,
Id: obj.Id,
LabelName: obj.LabelName,
Percentages: obj.Percentages,
ProductCategories: obj.ProductCategories
}

JSON.stringify(newObj); // Returns correct JSON.


我使用代码将对象强制发送到Web api,但是当然不是我想要的方式。



如我所见


没有周期。
它不太深。 (只有深度3)


因此,我无法弄清楚出了什么问题。

最佳答案

好吧,我建议您创建一个函数来克隆您的对象,而该对象不包含我想为angular设置的$$hashKey属性:

function cloneObj (obj) {
var cloned = JSON.parse(JSON.stringify(obj));
delete cloned.$$hashKey;
for(var key in cloned) {
if(typeof cloned[key] === 'object') {
cloned[key] = cloneObj(cloned[key]);
}
}

return cloned;
}


在不使用 $$hashKey克隆对象之后,可以对其进行字符串化而没有任何问题。

关于javascript - JSON.stringify()不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com