当前位置: 首页 > news >正文

序列化的不同格式:JSON、XML、TOML、CSON、YAML

前言

这篇文章参考于知乎,进行了一些总结。

正文

首先什么是序列化,数据序列化是从一个系统获取一些信息,将其转换为其它系统可以读取的格式,然后将其传递给其它系统的过程。也就是可以让不同系统“通信”。

序列化需要满足两个特点,一是易于人类读写,二是易于机器读写。但这两点很难同时满足,因为人类喜欢更具表现力的、松散的、灵活的格式标准,而机器倾向于被确切告知一切事情而且没有二义性和细节的缺失。

有很多种序列化的格式,JSON、XML、TOML、CSON、YAML等,当然这些在传输的过程中还是要转换成二进制的,它们只是两个系统间通信的标准,能够互相读取。下面对它们分别进行简单的说明。

XML

虽然易于人类阅读和编写,但 XML 过于冗长和啰嗦,包含很多不必要的语法。即使对计算机解析也是一个负担,因为需要处理各种边缘情况。如今除了 HTML/SVG 等特定场景,XML 在 Web 数据交换中的使用已经不多。

<book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date><description>An in-depth look at creating applications with XML.</description>
</book>

JSON

JSON 其简洁的语法,不仅易于计算机解析,也相对人类可读。并且允许表示所有基本数据类型,并且可以嵌套表示复杂的数据结构。如今几乎所有编程语言都内置解析它的功能,几乎用在了任何地方。

{"books": [{"id": "bk102","author": "Crockford, Douglas","title": "JavaScript: The Good Parts", "genre": "Computer","price": 29.99,"publish_date": "2008-05-01","description": "Unearthing the Excellence in JavaScript"}]
}

TOML

TOML 的语法类似 Windows 的 INI 文件,看起来比 JSON 更加紧凑。它引入了表扩展等语法糖使嵌套数据结构更容易表示。TOML也内置了日期时间等数据类型的支持。缺点是目前语言支持库还比较欠缺,不过Rust是支持的。

[[books]]
id = 'bk101'
author = 'Crockford, Douglas'
title = 'JavaScript: The Good Parts'
genre = 'Computer'
price = 29.99
publish_date = 2008-05-01T00:00:00+00:00
description = 'Unearthing the Excellence in JavaScript'

CSON

CSON 本质上是去掉了 JSON 的大括号,使用缩进层级的语法变体。它来自于 CoffeeScript,目的是与 CoffeeScript 语言协同简化编程。但这也注定了 CSON 只能在 CoffeeScript 环境使用,通用性不高。

books: [id: 'bk102'author: 'Crockford, Douglas'title: 'JavaScript: The Good Parts'genre: 'Computer'price: 29.99publish_date: '2008-05-01'description: 'Unearthing the Excellence in JavaScript'
]

YAML

YAML 综合了 CSON 和 JSON 的优点,语法简洁可读,数据类型支持齐全,兼容 JSON 的同时增加了更多功能特性。大多数流行语言都提供了解析 YAML 的库支持,因此 YAML 被看作未来主流的数据序列化格式。缺点是不同语言的 YAML 实现之间存在细微差异。

books:- id: bk102author: Crockford, Douglastitle: 'JavaScript: The Good Parts'genre: Computerprice: 29.99publish_date: !!str 2008-05-01description: Unearthing the Excellence in JavaScript

总结

总的来说,每种格式均有其独特的侧重点,根据不同的使用场景可以选择不同的格式。JSON 简洁通用,YAML 功能全面可读性强,XML啰嗦但自描述能力强,TOML 紧凑易用但缺乏支持,CSON 则过于语言绑定。

http://www.lryc.cn/news/346027.html

相关文章:

  • Mapreduce | 案例
  • U盘文件剪切丢失怎么办?揭秘原因并给出恢复方法
  • 软件设计师考试---访问控制列表、堆,栈和堆栈、防火墙、数据流图、嵌入式操作、绑定方式、uml、模式、传输协议
  • vlock工具:锁定Linux终端的安全智能方法
  • 【Linux】Docker 安装部署 Nacos
  • 纯血鸿蒙APP实战开发——阅读翻页方式案例
  • 如何从Mac电脑恢复任何删除的视频
  • 【Halcon 内存泄漏记录 - C#】
  • MT8370_联发科MTK8370(Genio 510)芯片性能规格参数
  • 【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
  • ES全文检索支持拼音和繁简检索
  • 【DDR 终端稳压器】Sink and Source DDR Termination Regulator [C] S0 S1 S2 S3 S4 S5 6状态
  • 使用IIS部署Vue项目
  • QT+多线程TCP服务器+进阶版
  • Java入门基础学习笔记12——变量详解
  • bitmap requires a valid src attribute
  • Java刷题-基础篇
  • Linux——mysql运维篇
  • 力扣每日一题-统计已测试设备-2024.5.10
  • 代码+视频,R言语处理数据中的缺失值
  • PGSync安装使用教程(PostgreSQL数据实时同步至Elasticsearch)
  • 前端主题切换的多种方式
  • 使用RESTful API构建 web 应用程序
  • KaiOS Data PDN 数据建立流程
  • Mybatis-Plus常用的增删改查坑
  • 初识指针(4)<C语言>
  • pyqt 工具栏QToolBar控件
  • SystemVerilog/Verilog中的仿真延时建模之模块路径延时
  • 代码随想录算法训练营Day36 | 738.单调递增的数字、968.监控二叉树、贪心算法总结 | Python | 个人记录向
  • FME学习之旅---day26