【问题标题】:Question about JSON vs CBOR serialization关于 JSON 与 CBOR 序列化的问题
【发布时间】:2022-12-03 17:48:35
【问题描述】:

我对序列化的工作原理有一个理论上的疑问,尤其是像 JSON 这样的序列化方案和像 CBOR 这样的二进制序列化方案之间的区别。

我的问题是:如果 JSON 序列化程序将对象转换为 JSON 字符串,那么,为了存储或传输生成的 JSON 字符串,您是否还必须将 JSON 字符串转换为其字节表示形式?这就是二进制方案可能更快的原因,因为它们已经产生二进制输出了吗?

【问题讨论】:

    标签: json serialization cbor


    【解决方案1】:

    在内存中,字符串无论如何都表示为字节序列(实际上,内存中的所有内容都只是一个字节序列),所以这应该无关紧要。

    重要的是将 Javascript 变量的内存中表示形式转换为其等效字符串的内存中表示形式。一个极其简单的示例是值为 -1 的数字变量。这可以在内部用一个字节表示:

    > Buffer.of(-1)
    <Buffer ff>
    

    但它的 JSON 序列化 "-1" 需要两个字节:

    > Buffer.from(JSON.stringify(-1))
    <Buffer 2d 31>
    

    这应该给出一个想法,为什么可以更快地输出(和输入)更接近内部表示的二进制方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-26
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多