在 JSON otw 中发送值时,使用 bool 值还是整数来占用更少的空间更好?
例如:
{
foo: false
}
或者:
{
foo: 0
}
考虑到它只是一个数字,与 bool 值的 4 或 5 个字符相比,使用数字会占用更少的空间吗? (真假)
如果将它们从 JSON 转换为对象格式,这两种方法之间还有速度差异吗?
最佳答案
首先,这是微观优化,不太可能重要。如果您正在传输数千或数百万个这样的值,它可能会变得很重要;但在这种情况下,您可能想要比 JSON 更有效的东西(在许多情况下,纯 CSV 会更好,但理想情况下您会使用一些打包的二进制格式)。
其次,JSON 是一种用字符串表示数据的方式;所以存储或发送 JSON 意味着您正在存储或发送字符串。因此测量数据的大小是微不足道的:字符串有多长?字符串 0
有一个字符;字符串 false
有五个字符。
第三,如果你优化空间,你会删除所有无关紧要的空格,所以你的例子应该是 {"foo":false}
(13 个字符)和 {"foo":0}
(9 个字符)。请注意,您不能像示例中那样跳过 foo
周围的引号。 - 这不是有效的 JSON。
第四,当您将结构从 JSON 转换为对象时,该结构将占用多少内存或其他资源取决于您使用的语言、该语言的实现方式以及任何数量的其他因素,因此完全无法回答(和,再次是一个不太可能重要的微观优化)。
关于json boolean vs integer - 哪个占用更少的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870795/