布尔值和 Null
布尔值(Boolean)
什么是布尔值?
布尔值只有两个:true(真) 和 false(假)。
它就像生活中的开关——只有两种状态:开或关、是或否、有或没有。
JSON 中的写法
true
false
极其重要的规则:必须全部小写!
| 写法 | 是否合法 | 原因 |
|---|---|---|
true | ✅ 合法 | 全小写 |
false | ✅ 合法 | 全小写 |
True | ❌ 非法 | 首字母大写 |
False | ❌ 非法 | 首字母大写 |
TRUE | ❌ 非法 | 全大写 |
FALSE | ❌ 非法 | 全大写 |
⚠️ 很多编程语言允许
True/False或TRUE/FALSE,但 JSON 只认全小写!
布尔值的实际应用
布尔值通常用来表示状态、标志、是否类的信息。
示例 1:飞翔科技员工状态
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"isActive": true,
"isOnVacation": false,
"isFullTime": true,
"hasAdminRight": false
}
| 键 | 值 | 含义 |
|---|---|---|
isActive | true | 在职状态 |
isOnVacation | false | 没有休假 |
isFullTime | true | 是全职员工 |
hasAdminRight | false | 没有管理员权限 |
示例 2:购物订单状态
{
"orderId": 20251201123456,
"isPaid": true,
"inStock": true,
"isShipped": false,
"isRefunded": false,
"needInvoice": true
}
示例 3:医疗病历
{
"patientName": "张三",
"hasInsurance": true,
"hasFever": false,
"hasAllergy": false,
"needSurgery": false,
"isEmergency": false
}
示例 4:租房信息
{
"community": "飞翔中文苑",
"hasElevator": true,
"includesProperty": false,
"isDepositSystem": true,
"isFurnished": true,
"allowsPets": false
}
Null(空值)
什么是 Null?
null 表示"什么都没有"、"不存在"、"空"、"未知"。
它就像表格里的"留空"——不是 0,不是空字符串 "",而是彻底没有值。
JSON 中的写法
null
同样必须全小写:
| 写法 | 是否合法 |
|---|---|
null | ✅ 合法 |
Null | ❌ 非法 |
NULL | ❌ 非法 |
nil | ❌ 非法 |
None | ❌ 非法 |
Null 的实际应用
null 通常用来表示:
- 某个字段暂时没有值
- 某个字段不适用
- 某个字段被删除
- 某个字段未知
示例 1:员工信息中的空值
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"middleName": null,
"endDate": null,
"managerId": null,
"description": "沉稳靠谱,话不多但代码干净"
}
| 键 | 值 | 含义 |
|---|---|---|
middleName | null | 没有中间名 |
endDate | null | 未离职,没有结束日期 |
managerId | null | 没有直属上级 |
description | "沉稳靠谱..." | 有描述内容 |
示例 2:商品信息
{
"productId": 10086,
"productName": "飞翔机械键盘",
"discountPrice": null,
"originalPrice": 599.00,
"discontinuedDate": null,
"replacementProductId": null
}
discountPrice为null:当前没有折扣discontinuedDate为null:商品仍在售replacementProductId为null:没有替代产品
示例 3:电影信息
{
"movieName": "飞翔中文:前程似锦",
"releaseYear": 2018,
"sequelName": null,
"boxOffice": 100000,
"sequelReleaseYear": null
}
sequelName为null:没有续集sequelReleaseYear为null:没有续集,自然也没有续集上映年份
空字符串 "" vs Null
很多新手会混淆 "" 和 null,它们的区别很重要:
| 值 | 含义 | 类比 |
|---|---|---|
"" | 字符串存在,但内容为空 | 一个空盒子 |
null | 这个值不存在 | 连盒子都没有 |
{
"nickname1": "",
"nickname2": null,
"bio1": "",
"bio2": null
}
nickname1是"":用户设置了昵称,但昵称是空的nickname2是null:用户根本没有设置过昵称这个功能bio1是"":用户清空了个人简介bio2是null:用户从未填写过个人简介
0 vs Null
| 值 | 含义 |
|---|---|
0 | 数字零,有意义的数值 |
null | 没有值 |
{
"score1": 0,
"score2": null,
"attendance1": 0,
"attendance2": null
}
score1是0:考试得了 0 分score2是null:还没参加考试attendance1是0:出勤 0 天(全缺勤)attendance2是null:还没开始统计出勤
实战:飞翔科技员工完整状态
[
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"isActive": true,
"isOnVacation": false,
"resignDate": null,
"manager": "翼王",
"hasStockOption": false,
"description": "沉稳靠谱,话不多但代码干净"
},
{
"name": "星宇",
"department": "产品部",
"position": "产品助理",
"isActive": true,
"isOnVacation": false,
"resignDate": null,
"manager": "图妹",
"hasStockOption": null,
"description": null
},
{
"name": "风速",
"department": "技术部",
"position": "算法工程师",
"isActive": false,
"isOnVacation": false,
"resignDate": "2025-03-15",
"manager": null,
"hasStockOption": false,
"description": "闷骚技术宅,bug修复速度全公司第一"
}
]
分析:
- 航仔:在职,未休假,未离职,有上级,无期权,有描述
- 星宇:在职,未休假,未离职,有上级,期权未知(
null),描述未知(null) - 风速:已离职(
isActive: false),有离职日期,无上级(null),无期权
常见错误
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
True | 首字母大写 | true |
False | 首字母大写 | false |
TRUE | 全大写 | true |
Null | 首字母大写 | null |
NULL | 全大写 | null |
"true" | 加了引号,变成字符串 | true |
"null" | 加了引号,变成字符串 | null |
一句话总结
提示
布尔值只有 true 和 false,必须全小写。null 表示"什么都没有",也必须全小写。记住:"" 是空盒子,null 是连盒子都没有!