Ruby JSON.pretty_generate ……非常不合适

我似乎无法让JSON.pretty_generate()在Rails中实际生成漂亮的输出。

我正在使用Rails 2.3.5,它似乎自动加载JSON gem。 真棒。 使用script/console这确实产生了JSON:

 some_data = {'foo' => 1, 'bar' => 20, 'cow' => [1, 2, 3, 4], 'moo' => {'dog' => 'woof', 'cat' => 'meow'}} some_data.to_json => "{\"cow\":[1,2,3,4],\"moo\":{\"cat\":\"meow\",\"dog\":\"woof\"},\"foo\":1,\"bar\":20}" 

但是这不会产生很好的输出

 JSON.pretty_generate(some_data) => "{\"cow\":[1,2,3,4],\"moo\":{\"cat\":\"meow\",\"dog\":\"woof\"},\"foo\":1,\"bar\":20}" 

我发现生成它的唯一方法是使用irb并加载“Pure”版本:

 require 'rubygems' require 'json/pure' some_data = {'foo' => 1, 'bar' => 20, 'cow' => [1, 2, 3, 4], 'moo' => {'dog' => 'woof', 'cat' => 'meow'}} JSON.pretty_generate(some_data) => "{\n \"cow\": [\n 1,\n 2,\n 3,\n 4\n ],\n \"moo\": {\n \"cat\": \"meow\",\n \"dog\": \"woof\"\n },\n \"foo\": 1,\n \"bar\": 20\n}" 

但是,我真正想要的是Rails产生这个。 有没有人有任何提示,为什么我不能让Rails中的生成器正常工作?

谢谢!

要生成漂亮的JSON输出,您似乎只缺少一个puts调用。

数据:

 some_data = {'foo' => 1, 'bar' => 20, 'cow' => [1, 2, 3, 4], 'moo' => {'dog' => 'woof', 'cat' => 'meow'}} 

仅调用JSON.pretty_generate

 > JSON.pretty_generate some_data => "{\n \"foo\": 1,\n \"bar\": 20,\n \"cow\": [\n 1,\n 2,\n 3,\n 4\n ],\n \"moo\": {\n \"dog\": \"woof\",\n \"cat\": \"meow\"\n }\n}" 

添加puts组合:

 > puts JSON.pretty_generate some_data { "foo": 1, "bar": 20, "cow": [ 1, 2, 3, 4 ], "moo": { "dog": "woof", "cat": "meow" } } 

我使用Rails 2.3.8并安装了JSON gem( gem install json )。 JSON.pretty_generate现在在脚本/控制台中做得很好:

 >> some_data = {'foo' => 1, 'bar' => 20, 'cow' => [1, 2, 3, 4], 'moo' => {'dog' => 'woof', 'cat' => 'meow'}} => {"cow"=>[1, 2, 3, 4], "moo"=>{"cat"=>"meow", "dog"=>"woof"}, "foo"=>1, "bar"=>20} >> JSON.pretty_generate(some_data) => "{\n \"cow\": [\n 1,\n 2,\n 3,\n 4\n ],\n \"moo\": {\n \"cat\": \"meow\",\n \"dog\": \"woof\"\n },\n \"foo\": 1,\n \"bar\": 20\n}"