2016-03-05 88 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