Title here
Summary here
August 16, 2026 in 计算机与网络2 minutes
介绍一些常见的数据格式
这类格式主要用于配置文件、前后端通信,优点是方便人类阅读和编辑。
{} 和方括号 [],数据类型明确(字符串必须用双引号)。{
"username": "alice",
"age": 25,
"is_active": true,
"hobbies": ["reading", "coding"]
}<tag></tag> 包裹数据,结构严谨但非常冗余(标签名重复出现),文件体积大。<user>
<username>alice</username>
<age>25</age>
<is_active>true</is_active>
<hobbies>
<hobby>reading</hobby>
<hobby>coding</hobby>
</hobbies>
</user>username: alice
age: 25
is_active: true
hobbies:
- reading
- coding[section] 划分区块,键值对使用 =,比 YAML 更不容易因缩进出错。username = "alice"
age = 25
is_active = true
hobbies = ["reading", "coding"]这类格式将数据转换为二进制字节流,人类无法直接阅读,但解析速度极快、占用空间极小。
.proto 文件(Schema),然后编译生成对应语言的代码。字段使用数字编号代替字段名,极致压缩。message User {
string username = 1;
int32 age = 2;
bool is_active = 3;
repeated string hobbies = 4; // repeated 表示数组
}0x0a 0x05 0x61 0x6c 0x69 0x63 0x65...),无法直接用文本编辑器查看。# Python 代码示例
import msgpack
data = {"username": "alice", "age": 25}
packed = msgpack.packb(data)
# 输出类似: b'\x82\xa8username\xa5alice\xa3age\x19'主要用于海量数据的存储、分析和关系型数据库交互。
, 分隔。没有数据类型概念,所有值都是字符串。username,age,is_active,hobbies
alice,25,true,"reading,coding"age 列,它不需要读取整个文件,且自带极高的压缩率。import pandas as pd
# 读取 Parquet 文件
df = pd.read_parquet("users.parquet")
print(df)| 格式 | 可读性 | 文件体积 | 解析速度 | 核心应用场景 |
|---|---|---|---|---|
| JSON | ⭐⭐⭐⭐⭐ | 中等 | 中等 | Web API、前后端交互 |
| YAML | ⭐⭐⭐⭐⭐ | 小 | 慢 | 配置文件 (K8s, Docker) |
| XML | ⭐⭐⭐ | 大 | 慢 | 传统企业级系统、SOAP |
| Protobuf | ❌ (不可读) | 极小 | 极快 | 微服务 RPC (gRPC)、IoT |
| Parquet | ❌ (不可读) | 极小 | 快(按列读取) | 大数据仓库、数据分析 |
选型建议: