数据交换格式详解

一、JSON(JavaScript Object Notation)

1、JSON起源

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,由Douglas Crockford在2001年提出,它的设计目标是把数据格式简单化,具有良好的可读性,同时也方便程序读取和生成数据。与XML格式相比,JSON格式更为简单明了,尤其适用于Web应用程序的数据传输。

2、JSON数据结构

JSON数据结构由键值对组成,键值对之间用逗号“,”分隔,键值对之间用“:”分隔。JSON支持的数据类型有字符串、数字、布尔值、数组、对象和null。

{
    "name": "张三",
    "age": 22,
    "isMarried": false,
    "city": ["北京", "上海"],
    "education": {
        "school": "清华大学",
        "major": "计算机科学与技术"
    },
    "isStudent": null
}

3、使用JSON

在JavaScript中,可以用eval()方法将JSON字符串转换为JavaScript对象,也可以使用JSON.parse()方法将JSON字符串转换为JavaScript对象。而在其他编程语言中,也可以使用相应的解析器将JSON字符串解析为相应的数据类型。

//将JSON字符串转换为JavaScript对象
var jsonData = '{"name": "张三", "age": 22}';
var objData = JSON.parse(jsonData);

二、XML(eXtensible Markup Language)

1、XML起源

XML(eXtensible Markup Language,可扩展标记语言)是一种用于存储和交换数据的文本格式,由W3C在1998年发布。与HTML相似,XML也使用标签来描述数据,但XML的标签不是预定义的,而是由用户自定义的。XML在传输和存储数据时具有良好的跨平台性和互操作性。

2、XML数据结构

XML由标记和文本组成,XML的标记分为开始标记、结束标记和单一标记。开始标记和结束标记成对出现,标记之间包括文本、其他标记或者空格等。所有的标记必须是嵌套的,而且不能有交叉,每个标记都必须被正确地打开和关闭。

<student>
    <name>张三</name>
    <age>22</age>
    <isMarried>false</isMarried>
    <city>北京</city>
    <city>上海</city>
    <education>
        <school>清华大学</school>
        <major>计算机科学与技术</major>
    </education>
    <isStudent>null</isStudent>
</student>

3、使用XML

在Web开发中,可以使用XMLHttpRequest对象发送XML格式的数据,也可以使用DOM解析器将XML字符串解析为DOM树,然后对DOM树进行操作。在其他编程语言中,也可以使用相应的解析器将XML字符串解析为相应的数据类型。

//使用XMLHttpRequest对象发送XML格式的数据
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", true);
xhr.setRequestHeader("Content-type", "application/xml");
xhr.send("<student><name>张三</name><age>22</age></student>");

//使用DOM解析器解析XML字符串
var parser = new DOMParser();
var xmlDoc = parser.parseFromString("<student><name>张三</name><age>22</age></student>", "text/xml");

三、YAML(YAML Ain’t Markup Language)

1、YAML起源

YAML(YAML Ain’t Markup Language,YAML不是标记语言)是一种人类友好的数据序列化格式,由Clark Evans在2001年发布。YAML的设计目标是弥补XML的复杂性和JSON的不足,它的语法简单,可读性强,支持注释,同时还支持对象、数组、布尔值、null和日期等数据类型。

2、YAML数据结构

YAML使用缩进来表示层级关系,使用“:”来表示键值对的关系。YAML支持的数据类型有字符串、数字、布尔值、日期、数组、对象和null。YAML的注释使用“#”开头,直到行末为止,可以注释任何内容。

#学生信息
name: 张三
age: 22
isMarried: false
city:
  - 北京
  - 上海
education:
  school: 清华大学
  major: 计算机科学与技术
isStudent: null

3、使用YAML

在其他编程语言中,可以使用相应的解析器将YAML字符串解析为相应的数据类型,也可以使用YAML库将YAML字符串转换为相应的数据类型。

//将YAML字符串转换为JavaScript对象
var yamlData = "name: 张三\nage: 22";
var objData = jsyaml.safeLoad(yamlData);

四、CSV(Comma-Separated Values)

1、CSV起源

CSV(Comma-Separated Values,逗号分隔值)是一种常用的简单文件格式,它用逗号分隔数据,每行数据表示一个记录,多行数据组成一个表格。CSV格式简单、易于使用和存储,常用于电子表格和数据库的导入导出。

2、CSV数据结构

CSV格式中,每个记录占据一行,每个字段用逗号隔开。如果字段中包含逗号,那么需要使用双引号括起来,双引号中的逗号不作为分隔符。如果字段中包含双引号,那么需要使用两个双引号代替。

姓名,年龄,性别,城市
"张三",22,"男","北京"
"李四",24,"女","上海"
"王五",20,"男","广州"

3、使用CSV

在其他编程语言中,可以使用相应的解析器将CSV字符串解析为相应的数据类型,也可以使用CSV库将CSV字符串转换为相应的数据类型。

//将CSV字符串转换为JavaScript对象
var csvData = '姓名,年龄,性别,城市\n"张三",22,"男","北京"';
var objData = Papa.parse(csvData, {header: true});

可以看出,每个数据交换格式都有其独特的特点和优缺点,应根据实际情况选择合适的数据交换格式。

原创文章,作者:ELPO,如若转载,请注明出处:https://www.506064.com/n/147412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ELPOELPO
上一篇 2024-11-01 14:09
下一篇 2024-11-01 14:09

相关推荐

  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • 如何将视频导出成更小的格式给IT前端文件

    本文将从以下几个方面介绍如何将视频导出成更小的格式,以便于在IT前端文件中使用。 一、选择更小的视频格式 在选择视频格式时,应该尽可能选择更小的格式,如MP4、WebM、FLV等。…

    编程 2025-04-28
  • JavaScript中使用new Date转换为YYYYMMDD格式

    在JavaScript中,我们通常会使用Date对象来表示日期和时间。当我们需要在网站上显示日期时,很多情况下需要将Date对象转换成YYYYMMDD格式的字符串。下面我们来详细了…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论