我需要以最轻的方式发送数据,所以我需要知道什么是更轻的:将布尔数据发送为布尔true
或false
或将其作为数字1
发送或0
。
我知道它们是两种不同的数据类型,但在代码中我可以将布尔数据作为整数(1
或0
)发送,当我收到时,我可以将它转换回布尔值。我想知道什么是最轻的方式。
答案 0 :(得分:3)
JSON是 textual 数据格式。这意味着值true
将需要四个字符(可能是4个字节),而值0
只需要一个字符(1个字节)。
但是,如果你gzip JSON文档,差异可能是微不足道的,如果可能的话你应该这样做。
答案 1 :(得分:1)
有三种方法可以理解“最轻”:
var data = {
boolFalse: false,
numericFalse: 0,
boolTrue: true,
numericTrue: 1
};
var stringifiedData = JSON.stringify(data);
console.log('THIS IS JSON OBJECT:', data);
console.log('THIS IS STRINGIFIED JSON OBJECT:', stringifiedData);
P.S。如果您拥有庞大的JSON对象并希望在网络流量上实现最轻的实现,那么请查看BSON格式,并找到BSON库(例如:https://www.npmjs.com/package/bson)
答案 2 :(得分:0)
看起来你已经回答了你的问题。在任何类型的编程/代码中,二进制(0和1)是您可能拥有的最轻的数据形式。
如果你的问题是在0和1之间更亮,那么判断“0”的ASCII值低于“1”,我会说0.但这仍然取决于所使用的编码类型
我建议你将数据发送为0或1.如果你需要一个真假值,你总是可以像对待布尔值那样比较0和1。
在纯粹的本性中,True和False最终将表示为0和1。
Plus 0和1确实使您的JSON数据比使用True-False更短。除了数据来自使用GZIP压缩的服务器,在这种情况下,大小差异可以忽略不计。