数据格式:什么是JSON和XML

JSON和XML都是数据交换的一种格式,用于在不同的系统和应用程序之间传输和存储数据。本文将解释JSON和XML的基础内容,并探讨两者的不同。

一· 什么是JSON?

1. JSON(JavaScript Object Notation)即JavaScript对象标记法:

-JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

-JSON基于JavaScript的一个子集,但JSON是独立于语言的文本格式,许多编程语言都支持JSON。

-JSON格式的数据以键值对的形式存储,类似于编程语言中的字典或对象。

-JSON格式的数据通常用于Web开发中的前后端数据交换,API响应等。

实例:

{
  "name": "John",
  "age": 28,
  "is_student": true,
  "courses": ["History", "Mathematics", "Science"]
}

2. JSON语法规则:

1). 对象(Object):

  • 对象是由花括号`{}`包围的键值对集合。

  • 每个键必须是字符串类型,并且用双引号`""`包围。

  • 键值对之间用逗号`,`分隔。

  • 对象格式示例:`{ "key1": "value1", "key2": "value2" }`

2). 数组:

  • 数组是由方括号`[]`包围的值列表。

  • 数组中的值可以是任何JSON支持的数据类型,包括字符串、数字、布尔值、null、对象或数组(其他数组)。

  • 数组中的值之间用逗号`,`分隔。

3). 字符串(String):

  • 字符串是用双引号 "' 包围的文本。

  • 特殊字符需要使用转义字符,例如:`\"`表示双引号,`\\`表示反斜杠,`\n`表示换行符。

4). 数字(Number):

  • 数字可以是整数或浮点数。

  • JSON不支持八进制和十六进制,数值必须以十进制表示。

5). 布尔值(Boolean):

  • 布尔值只有两个可能的值:`true`和`false`。

6). null(Null):

  • `null`表示空值。

7). 键值对(Key-Value Pair):

  • 键值对是构成JSON对象的基本单元。

  • 键和值之间用冒号`:`分隔。

  • 键必须是字符串类型,并且用双引号包围。

  1. 逗号分隔(Comma Separation):
  • 在对象中,除了最后一个键值对外,每个键值对后都需要用逗号`,`分隔。

  • 在数组中,除了最后一个值外,每个值后都需要用逗号`,`分隔。

二· 什么是XML?

1. XML是一种标记语言,用于存储和传输数据。

-XML(eXtensible Markup Language,可扩展标记语言)是一种标记语言,用于描述数据的结构和语义。它被设计成既可用于简单的数据交换,也适用于复杂的文档结构。XML是一种自我描述语言,因为它允许你定义自己的标签(tags),这些标签描述了数据的内容和意图。

自我描述性:XML文档中的数据是自我描述的,每个元素都通过标签来描述其内容

可扩展性:可以定义自己的标签来适应特定的需求

嵌套结构:XML文档可以包含嵌套元素,这允许复杂的层次结构

广泛支持性:几乎所有现代编程语言都支持XML,并且有许多工具可以用来解析和生成XML文档

2.XML例子:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book>
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

<?xml version="1.0" encoding="UTF-8"?> 是XML声明,指明了XML版本和编码。

<bookstore> 是根元素,包含了整个文档的内容。

<book> 是子元素,表示书店中的一本书。

<title>, <author>, <year>, <price> 是<book>元素的子元素,分别描述了书的标题、作者、出版年份和价格。

lang="en" 是<title>元素的属性,表示标题的语种,"en"值表示标题是用English英语

</title>是结束标签

3.语法规则:

1). XML声明:

每个XML文档都可以包含一个可选的XML声明,指定XML版本和字符编码。例如:`<?xml version="1.0" encoding="UTF-8"?>`

2). 根元素:

XML文档必须有一个且仅有一个根元素,它包含所有其他元素。根元素不能有兄弟元素。

3). 元素匹配:

每个开始标签必须有一个对应的结束标签,以确保元素内容正确界定。例如:`<element>` ... `</element>`。

4). 标签嵌套:

元素标签可以嵌套,形成层次结构,但必须正确闭合,避免重叠或嵌套错误。

5). 标签名称大小写:

XML标签对大小写不敏感,但建议标签名称使用小写,以提高可读性。

6). 属性:

属性值必须用单引号或双引号括起来,但不能混用。属性名是大小写敏感的.............

三· JSON与XML的比较:

  • 可读性:JSON的格式更简洁,更易于阅读和编写。XML则较为冗长,包含更多的标记。

json文档:

{
  "name": "John",
  "age": 30,
  "is_student": false,
  "courses": ["Math", "Science", "English"],
  "address": {
    "street": "21 2nd Street",
    "city": "New York",
    "state": "NY"
  }
}

XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<person>
  <name>John</name>
  <age>30</age>
  <is_student>false</is_student>
  <courses>
    <course>Math</course>
    <course>Science</course>
    <course>English</course>
  </courses>
  <address>
    <street>21 2nd Street</street>
    <city>New York</city>
    <state>NY</state>
  </address>
</person>
  • 解析速度:JSON通常比XML更快地被解析,因为它的结构更简单。

  • 数据结构:JSON的结构更接近于编程语言中的字典或对象,而XML则更像是一种标记语言。

  • 扩展性:XML可以通过定义自己的标签来扩展,适合复杂的数据结构。JSON则更简单,但扩展性不如XML。

  • 用途:JSON常用于Web开发中的API和轻量级的数据交换。XML则常用于配置文件、文档存储和企业级的数据交换。

  • 支持:几乎所有现代编程语言都支持JSON。XML的支持也很广泛,但处理起来可能更复杂。

总的来说,JSON和XML都是有效的数据交换格式,选择哪一个取决于具体的应用场景和需求。

FineDataLink支持JSON解析和XML解析,使用 API输入 算子读取接口数据,再使用 JSON解析 OR XML解析 算子进行解析,可继续使用其他数据处理算子对数据进行处理,最后将数据输出。

免费试用、获取更多信息,点击了解更多>>>体验FDL功能****

了解更多数据仓库与数据集成关干货内容请关注>>>FineDataLink官网****

相关推荐
黎明晓月1 天前
PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)
postgresql·json·list
心死翼未伤1 天前
python从入门到精通:pyspark实战分析
开发语言·数据结构·python·spark·json
Mephisto.java2 天前
【大数据学习 | flume】flume Sink Processors与拦截器Interceptor
大数据·sql·oracle·sqlite·json·flume
ac-er88882 天前
ThinkPHP中使用ajax接收json数据的方法
前端·ajax·json·php
0x派大星2 天前
【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定
开发语言·后端·golang·go·json·gin
不能只会打代码3 天前
支持用户注册和登录、发布动态、点赞、评论、私信等功能的社交媒体平台创建!!!
前端·css·后端·html·json·媒体·社交媒体平台
愚公码农3 天前
MySQL json字段索引添加及使用
数据库·mysql·json
拧螺丝专业户3 天前
gin源码阅读(2)请求体中的JSON参数是如何解析的?
前端·json·gin
Mephisto.java3 天前
【大数据学习 | Spark】yarn-client与yarn-cluster的区别
大数据·sql·oracle·spark·json·database
Mephisto.java3 天前
【大数据学习 | Spark】spark-shell开发
大数据·sql·oracle·spark·sqlite·json