json规范,平时不注意的特殊符号
今天在做项目的过程中发现json传值时,有回车符就挂了,在网上找了找资料发现原来json不支持某些特殊符号,使用时需要转义,同时8进制或者16进制的数字也不行 数字以0开头也不行
以下是比较官方的说法:
2. JSON语法
JSON文本是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个实字名。
JSON文本一个串行化的对象或数组。
JSON-text = object / array
以下是六个构造字符:
begin-array = ws %x5B ws ; [ 左方括号
begin-object = ws %x7B ws ; { 左大括号
end-array = ws %x5D ws ; ] 右方括号
end-object = ws %x7D ws ; } 右大括号
name-separator = ws %x3A ws ; : 冒号
value-separator = ws %x2C ws ; , 逗号
在这六个构造字符的前或后允许存在无意义的空白符。
ws = *(
%x20 / ; 空格符
%x09 / ; 水平制表符
%x0A / ; 换行符
%x0D ; 回车符
)
2.1. 值
JSON必须(MUST)是一个对象、数组、数字或字符串,或者是下面三个实字名之一:
false null true
实字名必须(MUST)是小写的,且不允许有其它的实字名。
value = false / null / true / object / array / number / string
false = %x66.61.6c.73.65 ; false
null = %x6e.75.6c.6c ; null
true = %x74.72.75.65 ; true
2.2. 对象
对象结构被表示为:一对大括号包围着零个或多个name/value对(或者是成员) 。名是string类型的。每个名后面根一个冒号,把名与值分开。逗号则隔开紧跟在值后的另一个名。对象中的这些名应该(SHOULD)是唯一的。
object = begin-object [ member *( value-separator member ) ] end-object
member = string name-separator value
2.3. 数组
数组结构表示为:方括号包围着零个或多个值(或是元素)。元素间以逗号相隔。
array = begin-array [ value *( value-separator value ) ] end-array
2.4. 数字
数字的表示法与其它多数编程语言相似。一个数字包括一个可能带着负号的整数成分,它后面可能跟着一个小数部分或是指数部分。
不允许有八进制及十六进制形式。前面带有0也是被禁止的。
小数部分是一个小数点后跟着一个或多个阿拉伯数字。
指数部分以大写或小写的E开头,E后面可以跟一个正/负号。接着是一个或多个阿拉伯数字。
数字值不能表示成阿拉伯数字数字的序列(如Infinity和Nan是不允许的)。
number = [ minus ] int [ frac ] [ exp ]
decimal-point = %x2E ; .
digit1-9 = %x31-39 ; 1-9
e = %x65 / %x45 ; e E
exp = e [ minus / plus ] 1*DIGIT
frac = decimal-point 1*DIGIT
int = zero / ( digit1-9 *DIGIT )
minus = %x2D ; -
plus = %x2B ; +
zero = %x30 ; 0
2.5. 字符串
字符串的表示法与C语言家族的规范类似。string以引号开始与结束。所有的Unicode字符都可以放置在引号中,除了转义字符:引号、反斜杆\、控制符(U+0000 - U+001F)。
所有的这些字符都因该避免。如果字符在基本的多语言环境中(U+0000 - U+FFFF),它可以以这样的六字符序列表示:一个反斜杆,后面跟一个字母U,再跟四个字符代号的十六进制编码的阿拉伯数字。A - F这些十六进制字母可以小写。所以像只包含一个反斜杆的字符可以表示成:"\u005C"。
另一种办法,可以用两个转义字符序列来表示一些常用的字符。所以像只包含一个反斜杆字符的字符串可以更简洁的表示成"\\"。
转义一个在多语言环境中不存在的字符,这个字符可以表示成一个12字符的序列,编码为UTF-16的代用对(UTF-16 surrogate pair)。所以像只包含一个G音谱字符的字符串可以表示为"\uD834\uDD1E"。
string = quotation-mark *char quotation-mark
char = unescaped /
escape (
%x22 / ; " quotation mark U+0022
%x5C / ; \ reverse solidus U+005C
%x2F / ; / solidus U+002F
%x62 / ; b backspace U+0008
%x66 / ; f form feed U+000C
%x6E / ; n line feed U+000A
%x72 / ; r carriage return U+000D
%x74 / ; t tab U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX
escape = %x5C ; \
quotation-mark = %x22 ; "
unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
转载于:https://www.cnblogs.com/jimmypony/archive/2008/09/04/1283575.html
json规范,平时不注意的特殊符号相关推荐
- json规范及转义字符
1.json的定义 注:https://www.json.cn/wiki.html 2.关于转义字符 注:https://www.codenong.com/19176024/
- 【空间规划符号库】国土空间规划_制图规范+制图样式
最近我更新公众号不那么勤快了,一是因为个人有点其他的事情,二是呢我个人也开始了斜杠青年的生活,三呢就是因为变懒了,写技术性文章懒得写,不过你们在后台依然可以问问题,若我能看到,也正好会的话,会帮你解答 ...
- Json文件解析(下
Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...
- json mysql乱码问题_JSON数据乱码问题
背景 程序员一提到编码应该都不陌生,像gbk.utf-8.ascii等这些编码更是经常在用,但时不时也会出个乱码问题,解决这个问题的方法大部分都是先google和baidu一下,最后可能在某个犄角旮旯 ...
- Python中JSON的基本使用
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dum ...
- 深入理解JavaScript系列:根本没有“JSON对象”这回事!
前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢. ...
- get 与 post的区别?application json 与form表单的区别?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [get 与 p ...
- 对JavaScript解析JSON格式数据的理解
对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...
- 第四十二次总结:json模块与pickle模块
什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就 ...
- java-初识大前端Node.js、ES6、Npm、Babel、模块化规范、WebPack、Vue-element-admin本地安装问题及解决、Git安装及配置、uni-app
VS code安装 安装成功 配置自动补齐Emment Node.js node.js下载网址: http://nodejs.cn/ 安装成功! 概念 Node.js发布于2009年5月,由Ryan ...
最新文章
- SQL Server将数据导出SQL脚本的方法 转
- 智源研究院多位学者入选“三大奖”!2020年度国家科学技术奖初评结果公布
- linux必会命令 - 后台运行程序 - nohup、
- 相同的树Python解法
- android view销毁回调,Android View 常用的回调方法
- C/C++ queue队列的理解以及使用
- Windows 8实用窍门系列:11.Windows 8 中的Toast Tile Badge通知
- 运动会计算机专业方队,求运动会入场式创意。要低成本的最好。我是计算机专业的。急!在线等,高悬赏!...
- matlab 贝塔系数,贝塔系数的三种计算方法.pdf
- 外汇EA自动交易的利与弊
- GPT-3写了一篇论文
- 电磁波的达朗贝尔方程 工程电磁场P25
- ExtJS各个版本官方API文档
- supermap gis
- Hive Table 操作命令汇总
- vue中inject用法
- 供应链厂商信息-2014
- 告别CMD.windows终端神器conemu设置
- iphone换android手机铃声,教你在iPhone上更换自己喜欢的铃声!超简单!
- 关于 Windows 中使用 Safari 的说明 (2022)
热门文章
- java数组元素的默认值_数组元素默认的初始值都是什么?
- 安装blocksci mac出错_你的Mac与Big Sur兼容吗?
- 防抖 节流_坚持造轮子第二天 防抖与节流
- tensorflow keras 搭建相机位姿估计网络--例
- mysql中的utf-8_永远不要在MySQL中使用UTF-8
- linux vnc服务器6,Linux(RHEL6\CENTOS6\OLE6) 下VNC-SERVER安装与配置
- mmlspark-102 : 简单的ML Pipelines
- 算法:还有比二分查找更快的算法,判断是否是子字符串Is Subsequence
- oracle转为纯大写,Oracle认证:oracle中小写转换成大写方法
- 不同运营商链路聚合_聚合路由器在视频直播应用中的优势