为什么Rails to_json给出的结果与Ruby to_json不同?
问题描述:
我有一个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_json
。 gem list
也在安装的宝石列表中显示json 1.8.3
。尽管如此,因为我运行了gem install json
,一切都按预期工作。整数作为整数进行json化。
任何人都可以解释为什么在我的Ruby脚本中的to_json
和require 'json'
正在工作,即使我不能从irb?
答
即使gem list
显示已经安装了json,解决方案仅仅是运行gem install json
。
当然你的问题是有趣的。但你的解决方案很简单。只需用is_a测试整数或字符串的值?然后根据您的需求转换为适当的。然后,免于打破软件的问题,所有时间都可以找到这种奇怪行为的原因。去我自己的一些测试。 –
@EddeAlmeida是的,我得到的解决方法很简单(虽然我没有访问处理部分),我仍然想知道为什么我的脚本从Ruby命令行执行时产生一定的输出,从Rails上下文。 – ilovebigmacs
当然@ ilovebigmacs。这值得研究。 –