我需要在 Ruby 中解析某些无效的 JSON。
类似于:
json_str = '{name:"Javier"}'
ActiveSupport::JSON.decode json_str
如你所见,它是无效的,因为哈希键没有被引用,它应该是
json_str = '{"name":"Javier"}'
但这无法更改,我必须解析未加引号的键。
我可以用 ActiveSupport 2.x 解析它,但 ActiveSupport 3 不允许。它抛出我:
Yajl::ParseError: lexical error: invalid string in json text.
{name:"Javier"}
(right here) ------^
顺便说一句,它是一个使用一些 Rails 库的 Ruby 应用程序,但它不是 Rails 应用程序
提前致谢
最佳答案
我会使用正则表达式来修复这个无效的 JSON:
json_str = '{name:"Javier"}'
json_str.gsub!(/(['"])?([a-zA-Z0-9_]+)(['"])?:/, '"\2":')
hash = Yajl::Parser.parse(json_str)
关于ruby - 如何使用 ActiveSupport 3 (Rails) 解析带有不带引号键的无效 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889511/