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

时间:2017-12-18 14:42:46

标签: json

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

e.g:

{
  foo: false
}

或者:

{
  foo: 0
}

使用数字会使用更少的空间,考虑它只是一个数字,相比之下,布尔值为4或5个字符? (真/假)

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

1 个答案:

答案 0 :(得分:4)

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

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

第三,如果您要针对空间进行优化,则删除所有无关紧要的空白,因此您的示例应为{"foo":false}(13个字符)和{"foo":0}(9个字符)。请注意,您无法,就像您的示例中一样,跳过foo周围的引号 - 这是无效的JSON。

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