详解YAML 和 JSON 的区别

  • Post category:Python

下面我将详细讲解YAML和JSON的区别。

YAML和JSON的出现背景

  • JSON(JavaScript Object Notation):由于Web应用的出现,需要一种轻量级的数据交换格式,于是JSON应运而生。

  • YAML(YAML Ain’t Markup Language):大型编程项目中,配置文件的格式必须得像代码一样易读,YAML应运而生。

YAML和JSON的区别

  1. 字符串的表示方式

  2. JSON:使用双引号包含字符串。

{
  "name": "Mary",
  "age": 28
}
  • YAML:使用换行的方式表示字符串,也可以使用双引号(跟JSON类似)。
name: Mary
age: 28
name: "Mary"
age: 28
  1. 注释的表示方式

  2. JSON:没有注释的表示方式。

  3. YAML:可以使用#来注释一行,也可以使用|或>对多行进行注释。

# This is a comment
name: Mary
age: 28

# This is a multi-line
# comment using the '|' symbol
description: |
  Mary is a software developer

# This is a multi-line
# comment using the '>' symbol
notes: >
  Mary is an experienced developer
  who enjoys working with others
  1. 对象的表示方式

  2. JSON:使用“{}”表示一个对象,使用“[]”表示一个数组。

{
  "name": "Mary",
  "age": 28,
  "hobbies": ["coding", "reading"]
}
  • YAML:使用缩进表示对象,使用“-”表示数组。
name: Mary
age: 28
hobbies:
  - coding
  - reading
  1. 布尔类型的表示方式

  2. JSON:使用true或false表示布尔类型。

{
  "success": true,
  "failure": false
}
  • YAML:使用yes或no表示布尔类型。
success: yes
failure: no

示例

  1. 解析JSON格式的数据
import json

data = '{"name": "Mary", "age": 28, "hobbies": ["coding", "reading"]}'
parsed_data = json.loads(data)

print(parsed_data["name"]) # Output: Mary
print(parsed_data["hobbies"][0]) # Output: coding
  1. 解析YAML格式的数据
import yaml

data = """
name: Mary
age: 28
hobbies:
    - coding
    - reading
"""
parsed_data = yaml.safe_load(data)

print(parsed_data["name"]) # Output: Mary
print(parsed_data["hobbies"][1]) # Output: reading

以上就是YAML和JSON的区别的完整攻略,希望能对您有所帮助。