我有一个带有一个大数组(现在超过50KB)的大型JSON文件。 数组的每个elemet由~20个属性组成,其中许多属性就像:
"xy":"false"
所以现在我的想法是删除所有这些虚假的道具,只保留真正的道具。这是一种常见的方式吗?如果我检查真/未真或真/假,会有很大的“表现或其他”差异吗?
答案 0 :(得分:3)
听起来你没有数组,而是对象(给定你已经显示的"xy":"false"
属性初始值设定项。)
如果您对语义更改感到满意(属性不是不是,那么它不是false
[或者"false"
]),那么确定,没关系。如果您的房产'值实际上是false
(而不是问题中显示的"false"
),然后执行以下操作:
if (deserializedObject.xy) {
// ...
}
else {
// ...
}
...将采用else
路由false
或不存在的属性(在JavaScript中;考虑到您的代码,我假设您使用JavaScript消耗此JSON )。
但是有区别,因此我对语义的评论。例如:
if ("xy" in deserializedObject) {
// ...
}
else {
// ...
}
...将使用您当前数据的if
块,但如果删除该属性,则会else
阻止deserializedObject.hasOwnProperty("xy")
。
答案 1 :(得分:0)
取决于。
我的意思是,是的,通过减少数据发送,您无可否认地获得了性能提升。
但它值得吗......?有可能。就个人而言,我保留了这样的"优化"对于文件可能被许多用户多次调用的情况,因为10个左右的字节变化乘以一天中的一百万个请求是10Mb,或一个月300Mb,这仅仅是因为一个财产。所以潜在的节省是巨大的。
然而,大部分时间,它都不值得。
答案 2 :(得分:0)
如果我正确地读了你,你的JSON就是一大堆对象,每个对象有20个属性。 。 。那是对的吗?
如果是这样,应该相对容易,只是省略任何设置为false
的属性。那时,您可以简单地依赖这样的代码来检查您想要的“true / false”属性:
if (jsonValue[currentObjectindex].hasOwnProperty("nameOfProperty") {
. . . do stuff for the "true" state . . .
}
else {
. . . do stuff for the "false" state . . .
}
当然,只有在 确定 时这些属性才会存在于对象中才会生效。否则,在属性存在的情况下,您还必须检查true
值。
根据给定对象中有多少false
个属性,结果可能是一个相当小的JSON结构。