Der*_*Jan 6 ruby gem json ruby-on-rails ruby-on-rails-3
在json.org网站,一个字符串被定义为"char+"其中char+的一个或多个char.A char是除了"或之外的任何unicode字符\.允许控制字符的子集,只是逃避它们:
"foo" "2" "\\"
在Javascript中,如果要解析字符串,则需要将其括起来:
"\"foo\""或者'"foo"',但不是"'foo'"
在Rails 3中,运行C或纯Ruby代码的JSON gem是默认的.
根据接受的答案,gem解析JSON文档而不是元素.文档是键,值(对象/哈希)或值(数组)形式的集合.
假设我们要解析字符串foo,我们需要将其括起来"\"foo\""或'"foo"'
JSON.parse("\"foo\"")
JSON.parse('"foo"')
Run Code Online (Sandbox Code Playgroud)
让
JSON::ParserError unexpected token at '"foo"'
Run Code Online (Sandbox Code Playgroud)
意思是它无法解析 "foo"
数字也是如此:'3'或者"3"会产生Needs at least two octets.较大的数字(八位字节是一个字节,因此两个utf8字符是两个字节):'42'或者"42"只是产生相同的数字JSON::ParserError unexpected token at '42'
如果gem在数组中,它会正确解析这些东西:'["foo"]'或'[3]'
jsonstring = '"foo"'
JSON.parse( "[#{jsonstring}]" )[0]
Run Code Online (Sandbox Code Playgroud)
产量
"foo"
Run Code Online (Sandbox Code Playgroud)
这是荒唐的.我不正确地理解某事吗?或者这个宝石被窃听了吗?
json.org指出:
JSON 建立在两种结构之上:
名称/值对的集合。在各种语言中,这被实现为对象、记录、结构、字典、哈希表、键控列表或关联数组。
值的有序列表。在大多数语言中,这被实现为数组、向量、列表或序列。
由于"foo"以上都不是,因此您会收到错误消息。为了更具体,请查看Ruby JSON Parser,文档指出:
要创建有效的 JSON 文档,您必须确保输出嵌入到 JSON 数组 [] 或 JSON 对象 {} 中。最简单的方法是将值放入 Ruby 数组或哈希实例中。
因此,您提到的“解决方法”实际上是使用 JSON 解析器解析字符串的正确方法。
附加信息:
在jsonlint.com和json.parser.online.fr"\"foo\""上解析会引发错误,解析通过了两个站点上的验证测试。["foo"]
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |