美文网首页
数据格式--语言专属数据格式

数据格式--语言专属数据格式

作者: MontyOak | 来源:发表于2018-01-27 22:37 被阅读13次

    语言自带数据格式

    许多语言都自带了语言层级的数据格式:比如说Java的Serializable,Ruby的Marshal,Python的Pickle等等。这些语言层级的编码方式使用十分方便,可以和语言中的对象直接互相转换。但是这种方式也有一些问题:

    • 编码结果和语言相关,在其它语言中很难完成解码工作,往往要求数据交互各方只能使用同一语言;
    • 解码的结果往往是一个对象,如果编码方植入恶意代码的话会带来极大安全隐患;
    • 数据版本控制需要在语言层级控制;
    • 编码解码操作对CPU的消耗,编码后数据的大小往往表现效率不佳;

    JSON与XML

    业界现有的标准数据格式中,JSON和XML无疑是最流行的。JSON,XML和CSV都是文本格式,具有很好的可读性。它们的缺点在于:

    • 在XML和CSV中,无法区分一个数字和全部由数字组成的字符串。JSON对数字和字符串做了区分,却没有区分整形和浮点型。这意味着在处理大数时(比如说大于2^53)将会无法处理或者损失精度;
    • 对于某些JSON,XML不支持的语言内数据类型,需要实现专门的代码来处理编码/解码的问题;

    在传输少量数据时,数据编码之后的体积大小不是什么关键因素。当数据量增大之后,数据编码的时间效率和空间占用就成为了需要关注的点。JSON在空间表现上要优于XML,但是仍然有很大的优化空间,这引申出了许多基于XML的优化数据格式(比如:WBXML, Fast Infoset等等)和基于JSON的优化数据格式(MessagePack, BSON, BJSON, UBJSON, BISON等等)。
    JSON和XML对于空间的额外占用主要在于键的存储,它们需要存储完整的键本身的值。

    相关文章

      网友评论

          本文标题:数据格式--语言专属数据格式

          本文链接:https://www.haomeiwen.com/subject/qveoaxtx.html