今天在做项目的过程中发现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规范,平时不注意的特殊符号相关推荐

  1. json规范及转义字符

    1.json的定义 注:https://www.json.cn/wiki.html 2.关于转义字符 注:https://www.codenong.com/19176024/

  2. 【空间规划符号库】国土空间规划_制图规范+制图样式

    最近我更新公众号不那么勤快了,一是因为个人有点其他的事情,二是呢我个人也开始了斜杠青年的生活,三呢就是因为变懒了,写技术性文章懒得写,不过你们在后台依然可以问问题,若我能看到,也正好会的话,会帮你解答 ...

  3. Json文件解析(下

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...

  4. json mysql乱码问题_JSON数据乱码问题

    背景 程序员一提到编码应该都不陌生,像gbk.utf-8.ascii等这些编码更是经常在用,但时不时也会出个乱码问题,解决这个问题的方法大部分都是先google和baidu一下,最后可能在某个犄角旮旯 ...

  5. Python中JSON的基本使用

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dum ...

  6. 深入理解JavaScript系列:根本没有“JSON对象”这回事!

    前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢. ...

  7. get 与 post的区别?application json 与form表单的区别?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [get 与 p ...

  8. 对JavaScript解析JSON格式数据的理解

    对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...

  9. 第四十二次总结:json模块与pickle模块

    什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就 ...

  10. 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 ...

最新文章

  1. SQL Server将数据导出SQL脚本的方法 转
  2. 智源研究院多位学者入选“三大奖”!2020年度国家科学技术奖初评结果公布
  3. linux必会命令 - 后台运行程序 - nohup、
  4. 相同的树Python解法
  5. android view销毁回调,Android View 常用的回调方法
  6. C/C++ queue队列的理解以及使用
  7. Windows 8实用窍门系列:11.Windows 8 中的Toast Tile Badge通知
  8. 运动会计算机专业方队,求运动会入场式创意。要低成本的最好。我是计算机专业的。急!在线等,高悬赏!...
  9. matlab 贝塔系数,贝塔系数的三种计算方法.pdf
  10. 外汇EA自动交易的利与弊
  11. GPT-3写了一篇论文
  12. 电磁波的达朗贝尔方程 工程电磁场P25
  13. ExtJS各个版本官方API文档
  14. supermap gis
  15. Hive Table 操作命令汇总
  16. vue中inject用法
  17. 供应链厂商信息-2014
  18. 告别CMD.windows终端神器conemu设置
  19. iphone换android手机铃声,教你在iPhone上更换自己喜欢的铃声!超简单!
  20. 关于 Windows 中使用 Safari 的说明 (2022)

热门文章

  1. java数组元素的默认值_数组元素默认的初始值都是什么?
  2. 安装blocksci mac出错_你的Mac与Big Sur兼容吗?
  3. 防抖 节流_坚持造轮子第二天 防抖与节流
  4. tensorflow keras 搭建相机位姿估计网络--例
  5. mysql中的utf-8_永远不要在MySQL中使用UTF-8
  6. linux vnc服务器6,Linux(RHEL6\CENTOS6\OLE6) 下VNC-SERVER安装与配置
  7. mmlspark-102 : 简单的ML Pipelines
  8. 算法:还有比二分查找更快的算法,判断是否是子字符串Is Subsequence
  9. oracle转为纯大写,Oracle认证:oracle中小写转换成大写方法
  10. 不同运营商链路聚合_聚合路由器在视频直播应用中的优势