2016-03-05 110 views
2

我有一个Ruby脚本,将散列转换为json并将其写入文件。我使用to_json方法。为什么Rails to_json给出的结果与Ruby to_json不同?

在该文件中,我得到以下结果:

{"name":"Bob","age":42}

我一个模块中复制的lib目录我的Rails应用程序内的这个剧本,现在,当我把它从一个控制器,I得到写入文件以下结果:

{"name":"Bob","age":"42"}

注意42现在是"42"。这是为什么?我如何强制Rails将它写为42而不是"42"

这会引起我的问​​题,因为我的应用程序正在处理该文件,并在将其转换回散列时,int现在是一个字符串。

编辑

似乎没有安装json宝石。这很奇怪,因为我的Ruby脚本和Rails版本都可以调用to_jsongem list也在安装的宝石列表中显示json 1.8.3。尽管如此,因为我运行了gem install json,一切都按预期工作。整数作为整数进行json化。

任何人都可以解释为什么在我的Ruby脚本中的to_jsonrequire 'json'正在工作,即使我不能从irb?

+0

当然你的问题是有趣的。但你的解决方案很简单。只需用is_a测试整数或字符串的值?然后根据您的需求转换为适当的。然后,免于打破软件的问题,所有时间都可以找到这种奇怪行为的原因。去我自己的一些测试。 –

+1

@EddeAlmeida是的,我得到的解决方法很简单(虽然我没有访问处理部分),我仍然想知道为什么我的脚本从Ruby命令行执行时产生一定的输出,从Rails上下文。 – ilovebigmacs

+0

当然@ ilovebigmacs。这值得研究。 –

回答

0

即使gem list显示已经安装了json,解决方案仅仅是运行gem install json

相关问题