Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Rails to_json给出的结果与Ruby to_json不同?_Ruby On Rails_Ruby_Json - Fatal编程技术网

Ruby on rails 为什么Rails to_json给出的结果与Ruby to_json不同?

Ruby on rails 为什么Rails to_json给出的结果与Ruby to_json不同?,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,我有一个Ruby脚本,可以将哈希转换为json并将其写入文件。我使用to_json方法 在该文件中,我得到以下结果: {“姓名”:“鲍勃”,“年龄”:42} 我在Rails应用程序的lib目录中的一个模块中复制了这个脚本,现在,当我从控制器调用它时,我会将以下结果写入文件: {“姓名”:“鲍勃”,“年龄”:“42”} 请注意,42现在是“42”。为什么呢?如何强制Rails将其编写为42,而不是“42” 这会引起我的问题,因为我的应用程序正在处理该文件,当将其转换回哈希时,int现在是一个字符串

我有一个Ruby脚本,可以将哈希转换为json并将其写入文件。我使用
to_json
方法

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

{“姓名”:“鲍勃”,“年龄”:42}

我在Rails应用程序的
lib
目录中的一个模块中复制了这个脚本,现在,当我从控制器调用它时,我会将以下结果写入文件:

{“姓名”:“鲍勃”,“年龄”:“42”}

请注意,
42
现在是
“42”
。为什么呢?如何强制Rails将其编写为
42
,而不是
“42”

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

编辑

似乎没有安装
json
gem。这很奇怪,因为我的Ruby脚本和Rails版本都能够调用
来实现json
<代码>gem列表也显示在已安装gem的列表中。尽管如此,自从我运行了
gem install json
,一切正常。整数被称为整数


有人能解释为什么我的Ruby脚本中的
to_json
require'json'
可以工作,即使我不能
从irb中要求'json'

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

当然你的问题是肯定的兴趣。但是你的解决方案很简单。只需测试值是否为整数或字符串,是否为?然后根据您的需要转换为合适的。然后,从破坏你的软件的问题中解脱出来,所有的时间都可以找到这种奇怪行为的原因。我自己也要在这里做一些测试。@EddeAlmeida是的,我知道解决方法很简单(尽管我没有访问处理部分),我仍然想知道为什么我的脚本在Ruby命令行执行时会产生一个特定的输出,在Rails上下文调用时会产生另一个输出。我在Rails 4.1应用程序中没有看到这一点;它将整数唯一化为整数。您的Gemfile或Gemfile.lock中有哪些与JSON相关的gem?在我的rails控制台中尝试了这些,并获得了正确的格式
“{\'name\':\'Bob\',\'age\':42}”
@daveshweisguth有趣。。。我可以在我的Rails控制台中调用
到_json
,它给了我一个字符串而不是一个整数。我在irb中也尝试了同样的方法,但没有成功。甚至不能
要求“json”
。当键入
gem list
时,它显示我有
json 1.8.3
,但我还是运行了
gem install json
,它安装了它。现在,一切正常。来自Rails控制台和irb。我仍然无法理解我的Ruby脚本如何与其中的
to_json
一起工作。这是个谜。