如何在 Ruby 中解析带单引号 (') 的 JSON 字符串?

Nil*_*ang 3 ruby parsing json

我正在尝试解析这样的 JSON 字符串:

JSON.parse("{'foo' : 42 }")
Run Code Online (Sandbox Code Playgroud)

然而,这会产生一个 JSON::ParseError:

JSON::ParserError: 757: unexpected token at '{'foo' : 42 }'
    from /Users/nils/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/json/common.rb:155:in `parse'
    from /Users/nils/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/json/common.rb:155:in `parse'
    from (irb):2
    from /Users/nils/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我认为它期望'角色是一个"角色。由于我有多个 GB 的此类文件,因此我想让解析器使用它。由于某些值可能还包含'字符,因此我不能简单地运行搜索并替换它们,因为这可能会破坏原始内容。

关于如何让 JSON 解析器解析这个的任何建议?

Jör*_*tag 6

我正在尝试解析这样的 JSON 字符串:

JSON.parse("{'foo' : 42 }")
Run Code Online (Sandbox Code Playgroud)

那不是 JSON 字符串。

但是,这会产生一个JSON::ParseError

这是正确的,因为字符串不是 JSON。

关于如何让 JSON 解析器解析这个的任何建议?

你不能用 JSON 解析器解析它,因为它不是 JSON。

您需要弄清楚它是什么语言,然后使用该语言的解析器。

您发布的代码段看起来像YAML,但当然这可能只是偶然。

require 'yaml'

YAML.load("{'foo' : 42 }")
# => { "foo" => 42 }
Run Code Online (Sandbox Code Playgroud)

但请注意,试图从一个简短的示例中猜测语言是非常容易出错的。您应该与该序列化的制作者协商并询问他们它是什么语言。