通过网络发送JSON时,数字如何表示(以二进制或文本形式)?

时间:2019-03-16 14:50:18

标签: json firebase serialization firebase-realtime-database encoding

这可能是一个琐碎的问题...或者可能不是。当我将对象序列化为JSON时,数字如何表示?

具体来说,我需要知道将它们编码为二进制的效率如何。有2种方法:

  1. 将数字转换为其十进制字符串表示形式,然后将该字符串编码为二进制。
  2. 或将数字直接编码为二进制。

是哪种情况?

这是一个很大的不同:假设序列化的对象包含数字12345678。第一种编码方式传输需要8 B,第二种编码方式只需4B。相对于第一种情况,在处理大量数字时(我的情况),我最好使用base64作为序列化的预处理。

我可以想象这可能取决于序列化程序(尽管我真的希望不是)。在这种情况下,我将使用Firebase Realtime数据库SDK。

1 个答案:

答案 0 :(得分:0)

JSON是文本表示法。因此,数字12345678是用这8个字符(即1、2、3等)发送的。根据您的文本编码,大概是8个字节(例如UTF-8或Windows-1252;但是如果您使用的是UTF例如-16,则为16个字节。

这些年来,已经有各种各样的“二进制JSON”提议,但是我认为它们中的任何一个都不真正存在于特定应用程序之外(例如,MongoDB中的BSON)。