Python 玩转 JSON:从零到灵活运用

41 阅读1分钟

JSON 格式详解 📝

📋 目录

  1. JSON 是什么
  2. JSON 支持的数据类型
  3. 序列化与反序列化
  4. 哪些数据 JSON 搞不定
  5. 元组为什么会变成列表
  6. 实用案例
  7. 最佳实践 & 踩坑提示

JSON 是什么

JSON 全称 JavaScript Object Notation,是一种轻量级的数据交换格式,特点是:

  • 跨语言:不管你用 Python、Java、Go 还是 PHP,都能处理
  • 好读好写:纯文本,人眼直接能看懂
  • 结构化:支持多层嵌套
  • 有规范:是标准化的,谁实现都得按规矩来

常见误区

  • 只有字典才能用 JSON 解析
  • 其实不止字典,数组、字符串、数字、布尔值、null 都可以

JSON 支持的数据类型

六种原生类型

JSON 类型Python 类型示例
Objectdict{"name": "张三", "age": 25}
Arraylist[1, 2, 3, "hello"]
Stringstr"Hello World"
Numberint/float123, 123.45
Booleanbooltrue, false
nullNonenull

常见结构示例

对象

{
  "name": "王者荣耀",
  "version": "3.71.1.8",
  "heroes_count": 118
}

数组

["廉颇", "小乔", "赵云", "墨子", "妲己"]

对象里套数组(常见 API 响应)

{
  "status": "success",
  "data": [
    {"id": 105, "name": "廉颇", "type": "坦克"},
    {"id": 106, "name": "小乔", "type": "法师"}
  ]
}

数组里套对象

[
  {"ename": 105, "cname": "廉颇", "hero_type": 3},
  {"ename": 106, "cname": "小乔", "hero_type": 2}
]

多层嵌套

{
  "game_info": {
    "name": "王者荣耀",
    "modes": ["排位赛", "匹配赛", "娱乐赛"]
  },
  "heroes": [
    {
      "basic_info": {"id": 105, "name": "廉颇"},
      "skills": ["被动", "一技能", "二技能", "大招"]
    }