如何最好地将javascript解析的JSON内容解析为ruby

How to best parse a javascript parsed JSON content into ruby

本文关键字:ruby JSON javascript 何最好      更新时间:2023-09-26

我有一个javascript文件,我使用我的javascript应用程序,我想在阅读和解析与ruby。这个文件的内容不是一个字符串化的JSON,而是一个javascript解析的JSON数据结构。

即如果我的ruby代码是

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

my testing.js is

{
  color:"blue"
}

如果我尝试在…中读取它将失败

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

如果我将test .js更改为字符串化的json内容

{
  "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结构的问题

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

a)修复的东西,所以它是有效的JSON。您可以手动执行,或者,如果您的值不包含冒号,则使用regexp: json.gsub!(/([a-zA-Z]+):/, '"'1":')

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