详细介绍JSON中所有转义字符的使用方法、规则和实际应用场景。 掌握转义字符是编写正确JSON的基础。
在JSON字符串中,某些特殊字符具有特殊含义(如双引号表示字符串的开始和结束)。 如果要在字符串中使用这些字符本身,就需要使用转义序列。
转义序列以反斜杠(\)开头,后跟一个或多个字符。JSON解析器会将转义序列转换为实际字符。
| 转义序列 | 表示字符 | 说明 | 示例 |
|---|---|---|---|
\\ | \ | 反斜杠本身 | "path": "C:\\Users\\John" |
\" | " | 双引号 | "text": "He said \"Hello\"" |
\n | 换行 | 换行符 | "message": "Line1\nLine2" |
\r | 回车 | 回车符 | "text": "Hello\rWorld" |
\t | 制表符 | 水平制表符(Tab) | "data": "Name:\tJohn" |
\b | 退格 | 退格符 | "text": "Hello\bWorld" |
\f | 换页 | 换页符 | "page": "Page1\fPage2" |
\/ | / | 正斜杠(可选转义) | "url": "https:\/\/example.com" |
\uXXXX | Unicode | Unicode字符(4位十六进制) | "emoji": "\u4e2d\u6587" |
Windows路径中的反斜杠需要转义
{
"path": "C:\\Users\\John\\Documents\\file.json"
}文本中包含双引号时需要转义
{
"quote": "He said \"JSON is awesome!\"",
"dialog": "\"Hello,\" she said."
}使用转义字符表示换行
{
"address": "Street\nCity\nCountry",
"poem": "Roses are red\nViolets are blue"
}URL中的正斜杠可以转义(可选)
{
"website": "https:\/\/json.czlazy.com",
"api": "https:\/\/api.example.com\/v1\/users"
}嵌套JSON需要双重转义
{
"config": "{\"name\": \"John\", \"age\": 30}"
}将JSON对象转为字符串形式,所有特殊字符都会被转义。
{ "name": "John" }"{ \"name\": \"John\" }"将转义后的字符串还原为JSON对象,转义序列变回实际字符。
"Line1\nLine2"Line1
Line2正斜杠的转义是可选的。在HTML中,</script>标签可能引起问题,所以在JSON中转义正斜杠是安全的做法。 但现代JavaScript引擎和JSON解析器都能正确处理未转义的正斜杠。
使用\uXXXX格式,其中XXXX是4位十六进制数。例如:\u4e2d表示"中"字。 对于emoji等超出BMP的字符,需要使用代理对(surrogate pair)。
当JSON字符串中包含另一个JSON时,需要双重转义。例如:{"name}":"John}中的引号, 在外层JSON中需要写成\\",结果就是\\"name\\"。