在现代软件开发中,JSON和YAML是两种最常用的数据序列化格式。JSON以其严格的语法和广泛的语言支持成为API数据交换的首选;YAML则以其简洁易读的特点成为配置文件的宠儿。本文将深入介绍这两种格式的特点、应用场景,以及如何使用云织星·工具台进行快速转换。
JSON与YAML简介
JSON(JavaScript Object Notation)
JSON诞生于2001年,最初是JavaScript的子集,现已成为跨语言的数据交换标准。
语法特点:
使用花括号
{}表示对象使用方括号
[]表示数组键名必须用双引号包裹
不支持注释
语法严格,多一个逗号都会报错
示例:
{
"name": "张三",
"age": 28,
"skills": ["Java", "Python", "Go"],
"address": {
"city": "杭州",
"district": "西湖区"
}
}
YAML(YAML Ain't Markup Language)
YAML诞生于2001年,设计目标是让人类更容易读写。
语法特点:
使用缩进表示层级关系
不需要引号(大多数情况)
支持注释(以
#开头)使用
-表示数组元素对缩进敏感,必须使用空格(不能用Tab)
示例:
# 用户信息
name: 张三
age: 28
skills:
- Java
- Python
- Go
address:
city: 杭州
district: 西湖区
格式对比
应用场景
JSON的典型应用
API数据交换
- RESTful API的请求和响应 - 前后端数据传输 - 第三方服务集成
配置文件
- package.json(Node.js项目配置) - tsconfig.json(TypeScript配置) - .eslintrc.json(ESLint配置)
数据存储
- NoSQL数据库(MongoDB、CouchDB) - 本地存储(localStorage)
YAML的典型应用
DevOps配置
- Kubernetes资源定义 - Docker Compose配置 - GitHub Actions工作流 - CI/CD流水线配置
应用配置
- Spring Boot的application.yml - Ruby on Rails配置 - Ansible Playbook
文档和数据
- OpenAPI/Swagger规范 - Jekyll静态网站配置 - Hugo网站配置
为什么需要格式转换?
在实际开发中,经常需要在JSON和YAML之间转换:
场景1:Kubernetes配置调试
从API获取的资源是JSON格式 → 转换为YAML便于阅读和修改
场景2:配置文件迁移
老项目使用JSON配置 → 新项目要求YAML格式
场景3:文档编写
YAML配置示例 → 转换为JSON用于API文档
场景4:程序处理
人工编写的YAML → 转换为JSON供程序解析
使用云织星·工具台转换
操作步骤
在输入框粘贴JSON或YAML内容
工具自动识别格式并转换
查看转换结果
一键复制使用
功能特点
自动识别:无需手动选择输入格式
实时转换:输入即转换,无需点击按钮
格式美化:输出结果自动格式化
错误提示:语法错误时给出明确提示
转换示例
JSON转YAML
输入(JSON):
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "nginx-deployment",
"labels": {
"app": "nginx"
}
},
"spec": {
"replicas": 3,
"selector": {
"matchLabels": {
"app": "nginx"
}
}
}
}
输出(YAML):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
YAML转JSON
输入(YAML):
server:
port: 8080
host: localhostdatabase:
driver: mysql
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secretlogging:
level:
root: INFO
com.example: DEBUG
输出(JSON):
{
"server": {
"port": 8080,
"host": "localhost"
},
"database": {
"driver": "mysql",
"url": "jdbc:mysql://localhost:3306/mydb",
"username": "root",
"password": "secret"
},
"logging": {
"level": {
"root": "INFO",
"com.example": "DEBUG"
}
}
}
YAML语法注意事项
1. 缩进必须使用空格
# 正确
parent:
child: value错误(使用了Tab)
parent:
child: value
2. 字符串引号
# 普通字符串不需要引号
name: hello world包含特殊字符时需要引号
message: "Hello: World"
path: 'C:\Users\name'包含冒号后有空格时必须引号
title: "Note: Important"
3. 多行字符串
# 保留换行符(|)
description: |
这是第一行
这是第二行
这是第三行折叠换行符(>)
description: >
这是一段很长的文字
会被折叠成一行
中间用空格连接
4. 布尔值和数字
# 这些都会被解析为布尔值
enabled: true
disabled: false
also_true: yes
also_false: no如果想要字符串"yes",需要引号
answer: "yes"数字
port: 8080
version: 1.0
常见问题
Q: 转换后格式不对怎么办?
检查原始内容是否有语法错误。JSON要求严格的语法,YAML对缩进敏感。
Q: YAML的注释转换后会丢失吗?
是的,JSON不支持注释,所以YAML转JSON时注释会丢失。
Q: 如何处理大文件?
云织星·工具台支持较大的文件,但建议超过1MB的文件使用命令行工具处理。
命令行转换方法
如果需要批量转换或处理大文件,可以使用命令行工具:
使用yq(推荐):
# YAML转JSON
yq -o=json input.yaml > output.jsonJSON转YAML
yq -P input.json > output.yaml
使用Python:
# YAML转JSON
python -c "import yaml,json,sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yamlJSON转YAML
python -c "import yaml,json,sys; print(yaml.dump(json.load(sys.stdin)))" < input.json
工具地址
👉 立即访问体验:https://sidereal.xianmei.info/
云织星·工具台 - 让开发更简单