2015-09-24 45 views

回答

4

更多信息從docs

JSON.generate只允許對象或數組轉換爲JSON語法。 to_json,但是,接受即使只作爲系列化

[JSON.dumps]是元帥和YAML的負載/轉儲接口的實現的一部分的方法的許多Ruby類。

如果給出anIO(類似於IO的對象或響應寫入方法的對象),則會生成JSON。

+0

除了可選的文件參數和限制之外,我仍然沒有發現'generate'和'dumps'之間的任何主要區別。是嗎? – linkyndy

+1

非常。正如文檔所說,'#dump'可以讓你像'serializer = [JSON,Marshal,YAML] [rand(3)]; serializer.dump(obj,io,limit)'。 (當然,更有用的方法是在配置文件中選擇串行器,例如,它比隨機選擇需要更多空間:P)。 – Amadan

3

JSON.generate只允許對象或數組轉換爲JSON語法。

to_json接受即使它僅作爲方法進行序列

JSON.generate(1) 
JSON::GeneratorError: only generation of JSON objects or arrays allowed 

1.to_json 
=> "1" 

JSON.dump許多Ruby類:轉儲OBJ作爲JSON字符串,呼叫生成的對象,並返回結果。

你可以從here

2

對於轉儲數組,散列和對象(由to_hash轉換),這三種方式是等價的。

但是JSON.generateJSON.dump只允許數組,散列和對象。

to_json接受許多Ruby類即使只作爲序列化的方法,像一個整數:

JSON.generate 1 # would be allowed 
1.to_json # => "1" 

JSON.generate了輸出的風格更多的選項(如空間,縮進)

而且JSON.dump ,輸出默認樣式,但是把一個IO類對象作爲第二個參數來寫,第三個參數作爲嵌套數組或對象的極限數量。

相關問題