Ruby JSON.pretty_generate ... 是相当不漂亮的[英] Ruby JSON.pretty_generate ... is pretty unpretty

本文是小编为大家收集整理的关于Ruby JSON.pretty_generate ... 是相当不漂亮的的处理方法,想解了Ruby JSON.pretty_generate ... 是相当不漂亮的的问题怎么解决?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 并加载"纯"版本:

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"
  }
}

本文地址:https://www.itbaoku.cn/post/786518.html