代码之家  ›  专栏  ›  技术社区  ›  Amy

Ruby JSON。漂亮的…很不漂亮

  •  19
  • Amy  · 技术社区  · 15 年前

    我好像没办法 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 要加载“纯”版本:

    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制作这个。有人知道为什么我不能让发电机正常工作吗?

    谢谢

    2 回复  |  直到 11 年前
        1
  •  20
  •   the Tin Man    11 年前

    要生成漂亮的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 JSON.pretty_generate some_data
    {
      "foo": 1,
      "bar": 20,
      "cow": [
        1,
        2,
        3,
        4
      ],
      "moo": {
        "dog": "woof",
        "cat": "meow"
      }
    }
    
        2
  •  6
  •   the Tin Man    11 年前

    我使用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}"