如何最好地将javascript解析的JSON内容解析到ruby中?[英] How to best parse a javascript parsed JSON content into ruby

本文是小编为大家收集整理的关于如何最好地将javascript解析的JSON内容解析到ruby中?的处理方法,想解了如何最好地将javascript解析的JSON内容解析到ruby中?的问题怎么解决?如何最好地将javascript解析的JSON内容解析到ruby中?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个用于我的 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 结构的问题

推荐答案

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

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

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

本文地址:https://www.itbaoku.cn/post/786779.html