Amy*_*Amy 19 ruby json rubygems ruby-on-rails
我似乎无法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}"
Run Code Online (Sandbox Code Playgroud)
但这不会产生漂亮的输出:
JSON.pretty_generate(some_data)
=> "{\"cow\":[1,2,3,4],\"moo\":{\"cat\":\"meow\",\"dog\":\"woof\"},\"foo\":1,\"bar\":20}"
Run Code Online (Sandbox Code Playgroud)
我发现生成它的唯一方法是使用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}"
Run Code Online (Sandbox Code Playgroud)
但是,我真正想要的是Rails产生这个.有没有人有任何提示,为什么我不能让Rails中的生成器正常工作?
谢谢!
小智 20
要生成漂亮的JSON输出,您似乎只是错过了一个puts电话.
数据:
some_data = {'foo' => 1, 'bar' => 20, 'cow' => [1, 2, 3, 4], 'moo' => {'dog' => 'woof', 'cat' => 'meow'}}
Run Code Online (Sandbox Code Playgroud)
仅限通话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}"
Run Code Online (Sandbox Code Playgroud)
添加puts到混合中:
> puts JSON.pretty_generate some_data
{
"foo": 1,
"bar": 20,
"cow": [
1,
2,
3,
4
],
"moo": {
"dog": "woof",
"cat": "meow"
}
}
Run Code Online (Sandbox Code Playgroud)
我使用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}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23979 次 |
| 最近记录: |