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

    • 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 综合实战

字符串(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"⚠️ 字符串
establishedYearNumber2018✅ 数字
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+XXXXUnicode 编码

示例 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"
| `"第一行 第二行"` | 字符串内直接换行 | `"第一行\n第二行"` |

一句话总结

提示

JSON 字符串就是双引号包裹的文本。记住:用双引号、内部双引号要转义 \"、反斜杠要转义 \\、换行用 \n!

上一页
数组(Array)
下一页
数字(Number)