json boolean vs integer - 占用的空间更少?

问题描述 投票:3回答:1

在JSON otw中发送值时,使用布尔值或整数来减少占用空间是否更好?

e.g:

{
  foo: false
}

要么:

{
  foo: 0
}

考虑到它只是一个数字,使用数字会使用更少的空间,而布尔值是4或5个字符吗? (真假)

如果将它们从JSON转换为对象格式,两种方法之间是否存在速度差异?

json
1个回答
3
投票

首先,这是微优化,并且不太可能是重要的。如果您运送数千或数百万这样的价值,它可能会变得重要;但是在这种情况下,你可能想要比JSON更有效的东西(在许多情况下普通的CSV会更好,但理想情况下你会使用一些打包的二进制格式)。

其次,JSON是一种表示字符串中数据的方式;因此存储或发送JSON意味着您正在存储或发送字符串。因此,测量数据的大小是微不足道的:字符串有多长?字符串0有一个字符;字符串false有五个字符。

第三,如果你正在优化空间,你将删除所有无关紧要的空白,所以你的例子应该是{"foo":false}(13个字符)和{"foo":0}(9个字符)。请注意,您不能像在示例中那样跳过foo周围的引号 - 这是无效的JSON。

第四,当你将它从JSON转换为对象时,结构将占用多少内存或其他资源取决于你正在使用的语言,该语言的实现以及任何其他因素,因此是完全无法回答的(并且再次,微观优化不太可能是重要的)。

© www.soinside.com 2019 - 2024. All rights reserved.