我正在尝试解析像这样的JSON字符串:
JSON.parse("{'foo' : 42 }")
但是,这会产生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>'
我认为它希望'
字符是"
字符。由于我有几千兆字节的这样的文件,我想让解析器使用它。由于某些值还可能包含'
个字符,因此我不能简单地运行搜索并替换它们,因为这可能会破坏原始内容。
有关如何使JSON解析器解析此问题的任何建议吗?
答案 0 :(得分:4)
我正在尝试解析像这样的JSON字符串:
JSON.parse("{'foo' : 42 }")
那不是JSON字符串。
但是,这会产生
JSON::ParseError
:
哪个是正确的,因为字符串不是JSON。
有关如何使JSON解析器解析此问题的任何建议吗?
您无法使用JSON解析器解析此问题,因为它不是JSON。
您需要弄清楚它是什么语言,然后使用该语言的解析器。
您发布的代码段看起来像YAML,但当然这可能是偶然的。
require 'yaml'
YAML.load("{'foo' : 42 }")
# => { "foo" => 42 }
但请注意,试图从一个简短的例子中猜测语言是非常容易出错的。你应该与该序列化的制作者商量,并询问它们是什么语言。