在JSON otw中发送值时,使用布尔值或整数来减少占用空间是否更好?
e.g:
{
foo: false
}
或者:
{
foo: 0
}
使用数字会使用更少的空间,考虑它只是一个数字,相比之下,布尔值为4或5个字符? (真/假)
如果将它们从JSON转换为对象格式,这两种方法之间是否存在速度差异?
答案 0 :(得分:4)
首先,这是微优化,不太可能重要。如果您运送数千或数百万这样的价值,它可能会变得重要;但是在这种情况下,你可能想要比JSON更有效的东西(在许多情况下普通的CSV会更好,但理想情况下你会使用一些打包的二进制格式)。
其次,JSON是一种在字符串中表示数据的方式;因此存储或发送JSON意味着您正在存储或发送字符串。因此,测量数据的大小是微不足道的:字符串有多长?字符串0
有一个字符;字符串false
有五个字符。
第三,如果您要针对空间进行优化,则删除所有无关紧要的空白,因此您的示例应为{"foo":false}
(13个字符)和{"foo":0}
(9个字符)。请注意,您无法,就像您的示例中一样,跳过foo
周围的引号 - 这是无效的JSON。
第四,当您将JSON转换为对象时,结构将占用多少内存或其他资源取决于您使用的语言,该语言的实现以及任何其他因素,因此是完全无法回答的(同样,微观优化也不太重要)。