【问题标题】:How to best parse a javascript parsed JSON content into ruby如何最好地将 javascript 解析的 JSON 内容解析为 ruby
【发布时间】:2011-12-15 13:49:04
【问题描述】:

我有一个用于我的 javascript 应用程序的 javascript 文件,我想读入该文件并使用 ruby​​ 进行解析。该文件的内容不是字符串化的 JSON,而是 javascript 解析的 JSON 数据结构。

I.E.如果我的 ruby​​ 代码是

require 'rubygems'
require 'json'
file = File.open("testing.js", 'r')
json = file.readlines.to_s
hash = JSON.parse(json)

我的 testing.js 是

{
  color:"blue"
}

如果我尝试阅读它会失败...

JSON::ParserError: 751: unexpected token at '{ color:"blue" }'

如果我将 testing.js 更改为字符串化的 json 内容,if 将起作用

{
  "color":"blue"
}

那么我怎样才能使 ruby​​ 脚本处理上面的第一种格式(未字符串化),以便我可以将文件保留为当前格式?

...只是为了澄清

我的文件的实际格式是

var setting = {
    color: "blue"
}

我只是提取'='符号的右侧来解析使用

require 'rubygems'
require 'json'
file = File.open("testing.js", 'r')
content = file.readlines.to_s
json = content.split("= ",2)[1]
hash = JSON.parse(json)

但得到与上述相同的错误,因为这是 JSON 结构的问题

【问题讨论】:

    标签: javascript ruby json gem


    【解决方案1】:

    据我所知,json gem 不允许这样的选项。问题是您的文件可能是有效的 JS,但它不是有效的 JSON,因此 JSON 库倾向于拒绝它。你有两个简单的选择:

    a) 修复这个东西,使它成为有效的 JSON。您可以手动完成,或者,如果您的值不包含冒号,则使用正则表达式:json.gsub!(/([a-zA-Z]+):/, '"\1":')

    b) 如果使用 Ruby 1.9,它不仅是有效的 JS,它也是有效的 Ruby,所以你可以eval 它。请注意那里的安全问题。

    【讨论】:

    • 是的,我明白这个问题。希望创建一个解析器来处理这种情况。我意识到 JSON gem 不会自己做这一切。我想编写 ruby​​ 代码来为此预处理内容,并认为以前可能已经有人这样做了。
    猜你喜欢
    • 2020-10-13
    • 2013-01-24
    • 2014-09-15
    • 1970-01-01
    • 2012-09-25
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多