字符串(String)
什么是字符串?
JSON 的字符串(String) 就是文本,必须用双引号 " 包裹起来。
字符串可以包含:
- 中文汉字
- 英文字母
- 数字
- 标点符号
- 空格
- 各种特殊符号(需要转义)
简单示例
"广州飞翔科技"
"www.feixiang.net"
"愿你朝华相顾,愿你前程似锦。"
"FEIXIANG"
"2018"
""
💡 注意:即使是纯数字,只要放在双引号里,就是字符串,不是数字。比如
"2018"是字符串,2018才是数字。
字符串的基本规则
| 规则 | 说明 | 正确 | 错误 |
|---|---|---|---|
| 必须用双引号 | JSON 不支持单引号 | "飞翔" | '飞翔' |
| 必须成对出现 | 开头和结尾都要加 | "飞翔" | "飞翔 |
| 空字符串是合法的 | 两个引号紧挨着 | "" | — |
实际例子对比
{
"companyName": "广州飞翔科技",
"englishName": "FEIXIANG",
"website": "www.feixiang.net",
"slogan": "愿你朝华相顾,愿你前程似锦。",
"establishedYearString": "2018",
"establishedYearNumber": 2018,
"emptyNote": ""
}
| 键 | 值 | 实际类型 |
|---|---|---|
companyName | "广州飞翔科技" | 字符串 |
englishName | "FEIXIANG" | 字符串 |
website | "www.feixiang.net" | 字符串 |
slogan | "愿你朝华相顾,愿你前程似锦。" | 字符串 |
establishedYearString | "2018" | ⚠️ 字符串 |
establishedYearNumber | 2018 | ✅ 数字 |
emptyNote | "" | 字符串(空) |
字符串里可以写什么?
根据 RFC 8259,字符串里可以写几乎所有 Unicode 字符,但以下字符必须转义:
| 字符 | 名称 | 必须转义? |
|---|---|---|
" | 双引号 | ✅ 必须转义 |
\ | 反斜杠 | ✅ 必须转义 |
| 控制字符(U+0000 ~ U+001F) | 如换行、回车 | ✅ 必须转义 |
| 中文、英文、数字、普通标点 | — | ❌ 不需要 |
示例:飞翔科技员工描述
{
"name": "航仔",
"description": "沉稳靠谱,话不多但代码干净,团队里的定海神针",
"department": "技术部",
"position": "后端开发"
}
这段 JSON 里的字符串包含中文、逗号、句号,都不需要转义。
什么是转义?
转义(Escape) 就是在特殊字符前面加一个反斜杠 \,告诉程序:"这不是普通字符,请特殊处理。"
JSON 中常用的转义序列:
| 转义序列 | 代表字符 | Unicode | 说明 |
|---|---|---|---|
\" | " | U+0022 | 双引号 |
\\ | \ | U+005C | 反斜杠 |
\/ | / | U+002F | 斜杠(可选) |
\b | 退格 | U+0008 | 很少用 |
\f | 换页 | U+000C | 很少用 |
\n | 换行 | U+000A | 常用 |
\r | 回车 | U+000D | 常用 |
\t | 制表符(Tab) | U+0009 | 常用 |
\uXXXX | 任意字符 | U+XXXX | Unicode 编码 |
示例 1:包含双引号的字符串
如果要在字符串里写双引号,必须转义:
{
"quote": "翼王说:\"开会我喜欢拍桌子。\""
}
显示效果:翼王说:"开会我喜欢拍桌子。"
如果不转义,JSON 解析器会以为字符串在 "开会 处就结束了,后面的内容就会报错。
示例 2:包含反斜杠的字符串
Windows 路径包含反斜杠,必须转义:
{
"configPath": "C:\\Users\\AOXIANG\\Documents",
"serverPath": "\\\\server\\shared\\config.json"
}
💡 每个反斜杠都要写成
\\,因为单个\会被当作转义符号。
示例 3:包含换行的字符串
JSON 字符串不能直接换行,必须用 \n 表示换行:
{
"address": "北京市朝阳区前程似锦路88号",
"multiLineSlogan": "愿你朝华相顾,\n愿你前程似锦。"
}
显示效果:
愿你朝华相顾,
愿你前程似锦。
示例 4:包含 Tab 的字符串
{
"tableHeader": "姓名\t部门\t职位",
"tableRow": "航仔\t技术部\t后端开发"
}
显示效果:
姓名 部门 职位
航仔 技术部 后端开发
Unicode 转义
JSON 支持用 \u 加上 4 位十六进制数来表示任何 Unicode 字符。
示例:用 Unicode 表示中文
{
"char1": "\u98de",
"char2": "\u7fd4",
"combined": "\u98de\u7fd4"
}
\u98de= 飞\u7fd4= 翔\u98de\u7fd4= 飞翔
💡 实际开发中,直接写中文
"飞翔"更方便,不需要用 Unicode 转义。Unicode 转义主要用于:某些系统不支持直接输入中文、或者需要表示不可见字符时。
字符串长度
JSON 规范没有限制字符串的最大长度,但实际的程序(如浏览器、服务器)可能会设置自己的限制。
空字符串
""
空字符串是合法的,表示"有字符串,但内容为空"。这和 null 不同:
| 值 | 含义 |
|---|---|
"" | 字符串存在,但长度为 0 |
null | 这个值不存在 |
{
"nickname": "",
"middleName": null
}
nickname是空字符串(用户没有昵称)middleName是 null(这个人没有中间名这个概念)
实战:飞翔科技员工信息中的字符串
{
"company": "广州飞翔科技",
"website": "www.feixiang.net",
"englishName": "FEIXIANG",
"slogan": "愿你朝华相顾,愿你前程似锦。",
"employees": [
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"personality": "沉稳靠谱,话不多但代码干净,团队里的定海神针",
"guangdongStyle": "经典粤式"
},
{
"name": "靓晴",
"department": "产品部",
"position": "UI设计师",
"personality": "温柔但较真,一个像素不对都要改,色彩敏感度极高",
"guangdongStyle": "真·靓"
}
]
}
这个 JSON 中,所有键名和大部分值都是字符串类型。
常见错误
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
'飞翔' | 用了单引号 | "飞翔" |
"飞翔 | 缺少结尾引号 | "飞翔" |
"翼王说:"开会我喜欢拍桌子。"" | 内部双引号未转义 | "翼王说:\"开会我喜欢拍桌子。\"" |
"C:\Users\AOXIANG" | 反斜杠未转义 | "C:\\Users\\AOXIANG" |
一句话总结
提示
JSON 字符串就是双引号包裹的文本。记住:用双引号、内部双引号要转义 \"、反斜杠要转义 \\、换行用 \n!