飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • JSON

    • JSON 是什么
    • JSON 的六种数据类型
    • 对象(Object)
    • 数组(Array)
    • 字符串(String)
    • 数字(Number)
    • 布尔值和 Null
    • 字符编码与转义
    • JSON 语法规则
    • 综合应用示例
  • JSONPath

    • JSONPath 是什么
    • 根标识符和基本路径
    • 名称选择器
    • 索引选择器
    • 通配符选择器
    • 数组切片选择器
    • 过滤器选择器(上)
    • 过滤器选择器(下)
    • 后代段
    • 函数扩展
    • JSONPath 综合实战

数组(Array)

什么是数组?

JSON 的数组(Array) 是用方括号 [] 包裹起来的有序值列表。

数组就像现实生活中的排队、清单、排行榜——里面的元素按顺序排列,第一个、第二个、第三个……

生活类比

飞翔科技技术部的员工名单:

  1. 航仔(后端开发)
  2. 翼王(架构师)
  3. 凌叔(运维工程师)
  4. 空少(前端开发)
  5. 风速(算法工程师)

用 JSON 数组表示:

["航仔", "翼王", "凌叔", "空少", "风速"]

数组的基本结构

[ 值1, 值2, 值3, 值4 ]

必须遵守的规则:

规则说明示例
用方括号包裹以 [ 开头,] 结尾[ ... ]
元素用逗号分隔逗号后面可以有空格"航仔", "翼王"
最后一个不加逗号末尾逗号会导致错误❌ ["a", "b",]
元素有序顺序是有意义的第一个、第二个……

数组元素可以是任何类型

JSON 数组的强大之处在于:元素可以是任意类型,而且同一个数组里的元素可以是不同类型。

示例 1:字符串数组

["技术部", "产品部", "运营部"]

示例 2:数字数组

[18, 28, 35, 25, 30]

示例 3:布尔值数组

[true, false, true, true, false]

示例 4:混合类型数组(合法但不太推荐)

["飞翔科技", 2018, true, null, {"employees": 12}]

⚠️ 虽然 JSON 允许混合类型,但实际编程时,通常建议一个数组里放同一种类型的数据,这样处理起来更方便。

示例 5:对象数组(最常用!)

这是实际开发中最常见的用法——数组里放多个对象:

[
  {
    "name": "航仔",
    "department": "技术部",
    "position": "后端开发"
  },
  {
    "name": "翼王",
    "department": "技术部",
    "position": "架构师"
  },
  {
    "name": "图妹",
    "department": "产品部",
    "position": "产品经理"
  }
]

💡 这种"对象数组"结构非常常见,比如 API 返回"用户列表"、"商品列表"、"订单列表"时,基本都是这种格式。


数组可以嵌套

数组里可以放数组,形成多维数组:

示例:飞翔科技各部门员工名单

[
  ["航仔", "翼王", "凌叔", "空少", "风速"],
  ["图妹", "星宇", "靓晴"],
  ["鸣哥", "雁姐", "波比", "云吞"]
]

这表示:

  • 第 1 个数组:技术部 5 人
  • 第 2 个数组:产品部 3 人
  • 第 3 个数组:运营部 4 人

示例:更清晰的嵌套结构(推荐)

[
  {
    "department": "技术部",
    "members": ["航仔", "翼王", "凌叔", "空少", "风速"]
  },
  {
    "department": "产品部",
    "members": ["图妹", "星宇", "靓晴"]
  },
  {
    "department": "运营部",
    "members": ["鸣哥", "雁姐", "波比", "云吞"]
  }
]

💡 第二种写法更清晰,因为每个数组元素都是一个对象,带有明确的部门名称。


空数组

数组里可以没有任何元素,这就是空数组:

[]

实际场景:比如一个部门暂时没有员工:

{
  "department": "财务部",
  "members": [],
  "note": "暂未组建"
}

实战:飞翔科技完整员工列表

技术部全员

[
  {
    "name": "航仔",
    "position": "后端开发",
    "personality": "沉稳靠谱,话不多但代码干净",
    "hobbies": ["钓鱼", "看科幻小说", "深夜撸串"]
  },
  {
    "name": "翼王",
    "position": "架构师",
    "personality": "霸气外露,技术独裁但护犊子",
    "hobbies": ["健身", "改装车", "收藏机械键盘"]
  },
  {
    "name": "凌叔",
    "position": "运维工程师",
    "personality": "佛系老好人,凌晨三点被叫起来修服务器也不生气",
    "hobbies": ["泡茶", "养鹦鹉", "逛花鸟市场"]
  },
  {
    "name": "空少",
    "position": "前端开发",
    "personality": "自恋臭屁,天天照镜子的精致boy",
    "hobbies": ["穿搭", "探店", "拍vlog"]
  },
  {
    "name": "风速",
    "position": "算法工程师",
    "personality": "闷骚技术宅,说话快得像机关枪",
    "hobbies": ["竞速游戏", "魔方", "收集跑鞋"]
  }
]

运营部全员

[
  {
    "name": "鸣哥",
    "position": "内容运营",
    "personality": "社牛,公司团建气氛组",
    "hobbies": ["脱口秀", "剧本杀", "组织饭局"]
  },
  {
    "name": "雁姐",
    "position": "用户运营",
    "personality": "人精,用户心理摸得透透的",
    "hobbies": ["炒股", "煲汤", "家长里短情报站"]
  },
  {
    "name": "波比",
    "position": "活动运营",
    "personality": "鬼马机灵,活动策划永远有惊喜",
    "hobbies": ["街舞", "极限运动", "薅羊毛"]
  },
  {
    "name": "云吞",
    "position": "社群运营",
    "personality": "软萌治愈,用户投诉到她这儿都能消气",
    "hobbies": ["探店", "做甜品", "追港剧"]
  }
]

对象与数组的组合使用

实际应用中,对象和数组总是组合使用的:

{
  "company": "广州飞翔科技",
  "departments": [
    {
      "name": "技术部",
      "headcount": 5,
      "members": ["航仔", "翼王", "凌叔", "空少", "风速"]
    },
    {
      "name": "产品部",
      "headcount": 3,
      "members": ["图妹", "星宇", "靓晴"]
    },
    {
      "name": "运营部",
      "headcount": 4,
      "members": ["鸣哥", "雁姐", "波比", "云吞"]
    }
  ],
  "totalEmployees": 12
}

这个 JSON 描述了整个公司的组织架构:

  • 最外层是一个对象
  • departments 的值是一个数组
  • 数组里的每个元素又是一个对象
  • 每个部门对象里,members 的值还是一个数组

常见错误

错误写法问题正确写法
['航仔', '翼王']用了单引号["航仔", "翼王"]
["航仔", "翼王",]末尾多余逗号["航仔", "翼王"]
{"航仔", "翼王"}用了花括号["航仔", "翼王"]

一句话总结

提示

JSON 数组就是 [] 包裹的有序列表。元素可以是任意类型,最常用的是"对象数组"。记住:方括号、逗号分隔、末尾不加逗号!

上一页
对象(Object)
下一页
字符串(String)