jq输出html 单引号引号转义符,javascript - 由于JSON中的单引号转义,jQuery.parseJSON抛出“无效的JSON”错误...
根据JSON网站上的状态机图,只允许转义双引号字符,而不是单引号。 单引号字符不需要转义:
更新 - 有兴趣的人的更多信息:
Douglas Crockford没有具体说明为什么JSON规范不允许字符串中的转义单引号。 但是,在他在JavaScript:The Good Parts的附录E中讨论JSON时,他写道:
JSON的设计目标是最小化,可移植,文本和JavaScript的子集。 为了实现互操作,我们需要达成一致意见的越少,我们就越容易互操作。
所以也许他决定只允许使用双引号定义字符串,因为这是所有JSON实现必须达成一致的规则。 因此,字符串中的单引号字符不可能意外终止字符串,因为根据定义,字符串只能以双引号字符终止。 因此,不需要允许在正式规范中转义单引号字符。
进一步深入研究,Crockford的JSON for Java实现了org.json更加允许,允许使用单引号字符:
toString方法生成的文本严格遵循JSON语法规则。 构造者在他们接受的文本中更宽容:
...
字符串可以用'(单引号)引用。
这是由JSONTokener源代码确认的。 JSON方法接受转义的单引号字符,并将它们视为双引号字符:
public String nextString(char quote) throws JSONException {
char c;
StringBuffer sb = new StringBuffer();
for (;;) {
c = next();
switch (c) {
...
case '\\':
c = this.next();
switch (c) {
...
case '"':
case '\'':
case '\\':
case '/':
sb.append(c);
break;
...
该方法的顶部是一个内容丰富的评论:
正式的JSON格式不允许单引号中的字符串,但允许实现接受它们。
所以有些实现会接受单引号 - 但你不应该依赖它。 许多流行的实现在这方面都是相当严格的,并且将拒绝包含单引号字符串和/或转义单引号的JSON。
最后,为了将这个问题与原始问题联系起来,JSON首先尝试使用浏览器的本机JSON解析器或加载的库(如json2.js)(如果适用的话,这是jQuery逻辑所基于的库,如果JSON不是定义)。 因此jQuery只能像底层实现一样宽松:
parseJSON: function( data ) {
...
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
...
jQuery.error( "Invalid JSON: " + data );
},
据我所知,这些实现只遵循官方的JSON规范,不接受单引号,因此jQuery也没有。
jq输出html 单引号引号转义符,javascript - 由于JSON中的单引号转义,jQuery.parseJSON抛出“无效的JSON”错误...相关推荐
- jq输出html 单引号引号转义符,jQuery.parseJSON由于JSON中的单引号转义而引发“无效JSON”错误...
小编典典 根据JSON网站上的状态机图,仅允许转义的双引号字符,不允许单引号. 更新-有兴趣者的更多信息: Douglas Crockford没有具体说明为什么JSON规范不允许字符串中的转义单引号. ...
- php语言中双引号的作用是什么,php中的单引号与双引号作用详解
一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...
- 常用HTML转义字符,html转义符,JavaScript转义符,html转义字符表,HTML语言特殊字符对照表(ISO Latin-1字符集)...
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- package.json 中的波浪号(~)和插入符号(^)有什么区别?
问题描述: 在我升级到最新的稳定版 node 和 npm 后,我尝试了 npm install moment --save.它使用插入符号 ^ 前缀将条目保存在 package.json 中.以前,它 ...
- python中井号的作用_在python请求中处理井号(#)
基本上,URL中的任何文本井号后的内容都是而不是发送到服务器.这适用于浏览器和requests.在 URL的格式表明type=#results部分实际上是一个查询参数.在 requests将自动编码查 ...
- oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected
通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放 ...
- c语言 号咋打,C语言C语言中的开头#号如何打? – 手机爱问
2004-12-20 C语言中如何实现输入密码?(在输入时显示为*号.) 参考: 以下程序功能: 接受所有打印字符. 不接受控制字符,如Ctrl+ ,Alt,F1等. 可使用退格键删除以输入字符. 回 ...
- js追加html内容换行符,javascript – 从HTML中提取文本,同时保留块级元素换行符
考虑: /** * Returns the style for a node. * * @param n The node to check. * @param p The property to r ...
- python字符串引号和转义_单引号字符串和转义符
1.单引号字符串和转义符 字符串和数字一样都是值,可以直接使用,在python控制台中直接输入字符串,如"hello world",会按原样输出该字符串,只不过用单引号扩了起来 & ...
最新文章
- 低代码缺少的五大组件
- 爱立信:SDN/NFV助力面向5G以及工业互联网的ICT转型
- 深度学习如何入门?怎么入门机器/深度学习?
- @font-face详细用法+实例——Web响应式前端学习笔记
- 怎么调整矩形边框宽度_PKPM:梁刚度放大通过放大系数与矩形梁转T形梁的区别...
- native8081端口 react_教你轻松修改React Native的端口(如何同时运行多个React Native、8081端口占用问题)...
- 计算机学院网络与新媒体,网络与新媒体专业课程描述.PDF
- 把 mysql sql_mode 设置为严格模式的方法
- 【MIMO通信】基于matlab空时分组编码MIMO_OFDM通信系统仿真【含Matlab源码 663期】
- PDF查看器之pdfvuer
- 养猫日记之如何获得一只喵
- 关于TypeError: e[h] is not a function的问题
- Rust 最受喜爱却少有人用,Python 仅排第六,2021 全球开发者调查报告出炉
- Struts1.x 登录实验-无数据库版
- 《数据库系统概念》8-选择、投影等关系运算
- adb命令模拟Android电量
- 傻瓜攻略(九)——MATLAB实现简单的多元线性回归(以炼钢转炉炉龄问题为例)
- 线上虚拟创意展厅设计
- SQL去重的三种方法汇总
​
- 手机硬件检测工具 AIDA64
热门文章
- Android学习笔记06---电话拨号器的制作:项目结构深化
- 1005 C语言控制输入1001-1004
- fastadmin model关联模型 关联查询问题
- 神奇的go语言(面向对象)
- 随想录(工作后的一点思考)
- 转正答辩ppt_如何顺利完成转正答辩?
- python测试嵌入式_用Python测试嵌入式系统的测试框架
- lightgbm过去版本安装包_Node版本管理利器-NVM,你们用过吗?
- 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...
- if mybatis or test_真赞!IDEA中这么玩MyBatis,让编码速度飞起