XML、JSON 和 Protocol Buffers (protobuf) 对比

目录

[1. XML (eXtensible Markup Language)](#1. XML (eXtensible Markup Language))

1)xml的特点:

2)xml的适用场景:

[2. JSON (JavaScript Object Notation)](#2. JSON (JavaScript Object Notation))

1)JSOM的特点:

2)JSON的适用场景:

[3. Protocol Buffers (protobuf)](#3. Protocol Buffers (protobuf))

1)protobuf的特点:

2)适用场景:

4.对比总结

5.选择建议


XML、JSON 和 Protocol Buffers (protobuf)这三种都是常用的数据交换格式 ,各有特点和适用场景。 接下来我会详细介绍 这三种数据交换格式并对比其优缺点。

1. XML (eXtensible Markup Language)

1)xml的特点:

  • 标签式标记语言,可扩展性强

  • 严格的结构化格式

  • 可读性好,但冗余较多

  • 支持命名空间和复杂数据类型

XML 复制代码
​
<person>
  <name>张三</name>
  <age>30</age>
  <address>
    <city>北京</city>
    <street>朝阳区</street>
  </address>
</person>

​

总的来说:

|---------|------------------------|
| xml | |
| 优点 | 代码可读性好 |
| 缺点 | 冗余信息太多,在网络传输中,消耗了更多的带宽 |

2)xml的适用场景:

  • 企业级系统集成

  • 配置文件(如Spring配置)

  • 需要严格数据验证的场景

  • Web服务(SOAP)

2. JSON (JavaScript Object Notation)

1)JSOM的特点:

  • 轻量级,易于阅读和编写

  • 键值对结构,与编程语言对象模型天然契合

  • 比XML更简洁,冗余少

  • 广泛用于Web应用

XML 复制代码
{
  "person": {
    "name": "张三",
    "age": 30,
    "address": {
      "city": "北京",
      "street": "朝阳区"
    }
  }
}

2)JSON的适用场景:

  • Web API(RESTful服务)

  • 前后端数据交互

  • 移动应用数据传输

  • NoSQL数据库(如MongoDB)

3. Protocol Buffers (protobuf)

1)protobuf的特点:

  • Google开发的二进制协议

  • 高度压缩,传输效率高

  • 需要预定义.proto文件

  • 跨语言支持好

  • 序列化/反序列化速度快

XML 复制代码
// 定义.proto文件
message Person {
  required string name = 1;
  optional int32 age = 2;
  
  message Address {
    required string city = 1;
    optional string street = 2;
  }
  
  optional Address address = 3;
}

2)适用场景:

  • 高性能RPC通信(gRPC)

  • 微服务间通信

  • 需要高吞吐量的系统

  • 移动应用节省流量

4.对比总结

特性 XML JSON Protocol Buffers
数据格式 文本(标签) 文本(键值对) 二进制
优点 代码可读性好 可读性中等,但是消耗的带宽比xml更少 基于二进制的格式对数据进行压缩,不涉及xml和json的荣誉信息,贷款消耗最少
缺点 冗余信息过多,在网络传输中消耗更多带宽 依然存在冗余信息 完全不可读
可读性 好 好 差(需工具解析)
大小 大 中等 很小
解析速度 慢 中等 很快
扩展性 强 中等 需要预定义
跨语言 是 是 是
典型应用 企业系统集成 Web API 高性能RPC

5.选择建议

  1. 需要人类可读/调试:选择JSON或XML

  2. 追求最高性能:选择protobuf

  3. Web开发:首选JSON

  4. 企业级系统:考虑XML

  5. 微服务/gRPC等对性能要求高的场景:protobuf是最佳选择

现代开发中,JSON因其简洁性和广泛支持已成为最流行的选择,但在性能敏感场景下,protobuf有明显优势。XML则在传统企业系统中仍有重要地位。

应在不同的场景下选择合适的数据交换格式。

相关推荐
Hello_Pyhx3 天前
NWinfo 导出 Windows 硬件信息:从 JSON 报告到缺项排查
windows·json
程序员大阳4 天前
副队长JavaScript教程(66)-本地存储实战:待办事项网页的开发
javascript·json·实战·待办事项·本地存储·案例
视觉小萌新5 天前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
翊众建站5 天前
用 JSON-LD 给企业官网做结构化数据:LocalBusiness 与 FAQPage 实践笔记
人工智能·搜索引擎·json
Patrick_Wilson6 天前
读懂一个 Go JSON 处理函数:从输入数据追踪结构体、校验与错误返回
go·json·编程语言
January12077 天前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
code2cat7 天前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
Frag0ut8 天前
Notepad++ 零基础入门:从记事本到代码编辑器的平滑过渡(2026最新版)
python·编辑器·html·json·notepad++·markdown·记事本
xiaoye-duck8 天前
《C++ 工具库实战》C++ 解析利器 JsonCpp:从基础使用到封装简易 JSON 工具
c++·json·第三方库