这个简单字符串被认为是有效的JSON吗?
Is this simple string considered valid JSON?
我在so中看到过很多复杂的问题,一些复杂的结构是否被认为是有效的JSON
但是在光谱的另一端呢?
"12345"
以上是有效的JSON吗?
是的,在大多数情况下。它是表示JSON值的有效JSON语法。
关于这个的混淆来自Douglas Crockford的RFC 4627,它最初在2006年定义了application/json
互联网媒体类型。上面写着:
JSON文本是序列化的对象或数组。
然而,正如Crockford在2013年的一篇文章中解释的那样(不幸的是与Google+的其他内容一起被删除,但在这里存档):
JSON只是一个语法,语法包括数字和字符串。JSON的使用必须有更多的限制。RFC-4627是一种可能的用途,并且从未打算成为JSON本身的标准。
示例字符串是一个有效的JSON值,但是使用它作为完整的JSON文本是不正确的。application/json
HTTP响应的正文。然而,这不再是真的:RFC-4627在2014年随着RFC 7159的发布而过时,它允许您使用任何JSON值:
JSON文本是一个序列化的值。请注意,以前的某些JSON规范将JSON文本约束为对象或数组。
JSON本身的标准;也在2013年发布了ECMA-404, JSON也在ECMAScript (JavaScript)规范ECMA-262的5.1版中定义。这些规范和大多数解析器允许任何JSON值作为完整的JSON文本,即使它只是一个简单的字符串。
从2014年开始,RFC 7159废除了旧的JSON RFC,并声明任何 JSON值都是有效的JSON文本和有效的应用程序/JSON内容——包括字符串。然而,它也指出了与旧JSON实现的不兼容性问题:
请注意,JSON先前的某些规范约束了aJSON文本为对象或数组。实现只生成调用JSON文本的对象或数组会像所有实现那样具有互操作性吗
这是一个有效的JSON字符串,但不是JSON对象。
见http://www.json.org/
在编写这个问题时,这不是一个有效的JSON文本。它应该是一个有效的字符串,可以作为JSON文本的一部分出现。
原规范说:
JSON文本是序列化的对象或数组。
…意味着最高级别必须是{}
或[]
。你不能直接插入字符串
最新的规范说:
JSON文本是一个序列化的值。请注意,以前的某些JSON规范将JSON文本约束为对象或数组。
所以现在任何值,包括字符串,都可以是完整的JSON文本,"12345"
现在是有效的
您可以简单地检查JSON。解析可以处理:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse示例这是所有有效的JSON:
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
- 如何将数组转换为有效的json
- 当其他解析器认为意外的令牌有效时,json.parse会失败
- jquery ajax”;SyntaxError:意外的输入结束“;基于有效的JSON
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- $http-get方法即使使用AngularJS中.Net WebApi的有效json也会失败
- 从文件目录结构创建JSON数据的有效功能
- jQuery.parseJSON()未在Windows服务器上解码有效的Json字符串
- 正在将字符串转换为有效的JSON对象
- 接收package.json的解析错误.验证为有效的json
- 接收json异步响应的最有效方式
- JavaScript JSON.任何更有效的方法
- 修复无效JSON的最有效方法
- d3.json有效,但$.getJson失败
- 具有JSON有效负载的Crossrider ajax帖子请求在Rails后端中无法正确接收
- Json响应无效,Json有效
- 如何使我的json有效
- JSON有效负载问题,javascript编码