JSON和XML学习笔记

JSON 和 XML 学习笔记(2025–2026 实用对比版)

这是目前最常用于前后端数据交换的两种格式的系统对比笔记,重点放在实际开发中最容易出错、面试最常问、生产中最常用的部分。

1. 核心对比表(背下来就能应对 80% 面试题)

维度JSONXML胜出方(2025–2026 主流趋势)
全称JavaScript Object NotationeXtensible Markup Language
数据类型支持对象、数组、字符串、数字、布尔、null元素、属性、文本、CDATA、注释、命名空间等JSON 更简洁
可读性非常高(接近 JS 对象字面量)一般(标签冗长)JSON
文件体积更小(无闭合标签、无属性冗余)更大(通常大 2–5 倍)JSON
解析速度极快(原生支持,V8 等引擎高度优化)较慢(需要 DOM/SAX/StAX 等解析器)JSON
生成/序列化难度极简单(几乎所有语言都有标准库)稍复杂(需要考虑命名空间、CDATA 等)JSON
注释支持不支持(官方标准无注释)支持()XML
命名空间支持(非常强大)XML(企业级复杂场景)
属性 vs 元素只有键值对支持元素和属性两种写法XML 更灵活
Schema 校验JSON Schema(逐渐普及,但不强制)XSD(DTD 已过时)两者都有,但 XML 更成熟
当前主流使用场景REST API、Web 前后端、配置、NoSQLSOAP Web Service、企业集成、Android Layout、Office Open XMLJSON 占绝对主导
2025–2026 趋势统治地位(OpenAPI、GraphQL、gRPC JSON)边缘化,仅遗留系统 + 特定领域JSON

2. 语法快速对照(最容易写错的地方)

// JSON(标准写法)
{
  "name": "张三",
  "age": 28,
  "isStudent": false,
  "scores": [95, 88, 76],
  "address": {
    "city": "上海",
    "zip": "200000"
  },
  "tags": null,
  "note": "备注里不能写注释"   // ← 不能写 // 或 /* */
}
<!-- XML(常见两种风格) -->
<person id="1001">                     <!-- 属性写法 -->
  <name>张三</name>
  <age>28</age>
  <isStudent>false</isStudent>
  <scores>
    <item>95</item>
    <item>88</item>
    <item>76</item>
  </scores>
  <address city="上海" zip="200000"/>   <!-- 自闭合 + 属性 -->
  <tags nil="true"/>                     <!-- 常见表示 null 的方式 -->
  <!-- 这是一行注释 -->
</person>

最常踩的坑对比

场景JSON 正确写法XML 正确写法常见错误(JSON)常见错误(XML)
布尔值true / falsetrue / false(不区分大小写)True / False1 或 Y
数字直接写,不加引号文本节点内容“age”: “28”
nullnull或省略元素“null”(字符串)null(字符串)
空数组/空对象[] / {}null(不推荐)
特殊字符转义\” \ \/ \b \f \n \r \t \uXXXX< > & ” ‘忘记转义 “忘记转义 & 或 <
键名必须双引号必须元素名/属性名可以不加引号(但不推荐){name: “张三”}

3. 实际开发中最常用的场景对比(2026 年视角)

场景推荐格式主要原因 / 当前生态备选方案
RESTful APIJSONOpenAPI/Swagger、axios/fetch 原生支持极少数遗留 SOAP 用 XML
GraphQLJSON官方只支持 JSON
gRPC(默认)protobuf性能最高gRPC-Web / gRPC-JSON
前端配置文件JSONvite.config.js、package.json、tsconfig.jsonYAML / TOML 也在抢市场
Android 布局文件XML历史原因 + Android Studio 强绑定Jetpack Compose 用 Kotlin DSL
企业级 SOAP Web ServiceXMLWS-* 标准、命名空间、XSD 校验逐渐被 REST/JSON 取代
Office 文件(docx/xlsx)XMLOpen XML 格式内部是 ZIP + XML
日志结构化输出JSONELK、Loki、Grafana 等直接解析
大模型工具调用返回JSONOpenAI、Anthropic、DeepSeek 等强制要求 JSON Mode

4. 面试 / 笔试最高频 12 问(建议准备的答案框架)

  1. JSON 和 XML 最大的区别是什么?
  2. 为什么现在几乎都用 JSON 而不用 XML 了?
  3. JSON 有哪些数据类型?XML 呢?
  4. JSONP 为什么能绕过同源策略?(历史遗留问题)
  5. JSON 中怎么表示日期?(没有标准,通常 ISO 8601)
  6. XML 有哪些解析方式?优缺点?(DOM / SAX / StAX / Pull)
  7. JSON Schema 和 XSD 分别用来干嘛?
  8. 怎么把 JSON 转成 XML?有什么坑?
  9. <![CDATA[]]> 是干什么用的?JSON 有类似机制吗?
  10. 为什么说 JSON 不是 JavaScript 的子集?(历史上有细微差异)
  11. 在前后端交互中,Content-Type 分别写什么?
  12. 如果让你设计一个支持注释的 JSON,你会怎么扩展?

5. 快速记忆口诀(面试背诵用)

  • 轻量、快速、无注释、无命名空间、无 Schema 强制 → JSON
  • 结构化强、支持注释、命名空间、严格校验、历史悠久 → XML
  • 2026 年口诀:能用 JSON 就别用 XML,除非你在维护 2010 年前的银行/电信/政府遗留系统。

需要哪一部分展开更详细的代码示例、工具推荐、常见转换库(Jackson、Gson、fastjson2、dom4j、JAXB 等)、或者某个面试题的完整参考答案?直接告诉我~

文章已创建 4791

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部