私は次のようなものを持っています:
{"a":"1","b":"2","c":"3","asefw":"dfsef"}
ビューで印刷したいのですが。それを行うための最良の方法は何ですか?
JSONオブジェクトとして解析してJSON.stringify
を使用しようとしましたが、インデントが混乱しているようです。
何かアドバイス? JavaScriptソリューションは気にしません。
どうですか:
require 'json'
hash = JSON['{"a":"1","b":"2","c":"3","asefw":"dfsef"}']
puts JSON.pretty_generate(hash)
どの出力:
{
"a": "1",
"b": "2",
"c": "3",
"asefw": "dfsef"
}
JSON.pretty_generate
は、ブラウザに送信するJSONを実際に生成するときに信頼するものというよりもデバッグツールです。 「きれいな」側面は、空白が追加されているため「肥大化」と「遅い」も意味しますが、構造内の内容を診断および理解するのに適しているため、ニーズに適している可能性があります。
覚えておくべきことの1つは、HTMLをブラウザーでレンダリングすると、空白が食いつぶされるため、空白の実行が消えることです。これを回避するには、JSON出力を<pre>
ブロックでラップして、空白と改行を保持する必要があります。このようなものが機能するはずです:
<pre>
{
"a": "1",
"b": "2",
"c": "3",
"asefw": "dfsef"
}
</pre>
<%= raw JSON.pretty_generate(hash).gsub(" "," ") %>
(私のように)RubyのJSONライブラリに組み込まれているpretty_generate
オプションが十分に「きれい」ではないことがわかった場合は、フォーマットに自分の NeatJSON
gemをお勧めします。
これを使用するには、gem install neatjson
を使用してから、JSON.neat_generate
の代わりにJSON.pretty_generate
を使用します。
Rubyのpp
と同様に、オブジェクトと配列は、収まるときに1行に保持されますが、必要に応じて複数に折り返されます。例えば:
{
"navigation.createroute.poi":[
{"text":"Lay in a course to the Hilton","params":{"poi":"Hilton"}},
{"text":"Take me to the airport","params":{"poi":"airport"}},
{"text":"Let's go to IHOP","params":{"poi":"IHOP"}},
{"text":"Show me how to get to The Med","params":{"poi":"The Med"}},
{"text":"Create a route to Arby's","params":{"poi":"Arby's"}},
{
"text":"Go to the Hilton by the Airport",
"params":{"poi":"Hilton","location":"Airport"}
},
{
"text":"Take me to the Fry's in Fresno",
"params":{"poi":"Fry's","location":"Fresno"}
}
],
"navigation.eta":[
{"text":"When will we get there?"},
{"text":"When will I arrive?"},
{"text":"What time will I get to the destination?"},
{"text":"What time will I reach the destination?"},
{"text":"What time will it be when I arrive?"}
]
}
また、出力をさらにカスタマイズするために、さまざまな フォーマットオプション もサポートしています。たとえば、コロンの前後にいくつのスペースがありますか?カンマの前後?配列とオブジェクトの括弧の内側?オブジェクトのキーを並べ替えますか?コロンをすべて並べますか?
たとえば、サンプルのハッシュを使用すると、必要なものに応じて、次のさまざまな出力を取得できます。
// JSON.neat_generate(o, wrap:true)
{
"a":"1",
"b":"2",
"c":"3",
"asefw":"dfsef"
}
// JSON.neat_generate o, wrap:true, aligned:true
{
"a" :"1",
"b" :"2",
"c" :"3",
"asefw":"dfsef"
}
// JSON.neat_generate o, wrap:true, aligned:true, around_colon:1
{
"a" : "1",
"b" : "2",
"c" : "3",
"asefw" : "dfsef"
}
irb(main)> puts queried_object.pretty_inspect
あなたは宝石を試すことができます awesome_print 非常にうまく機能し、あなたの見解では
<%= ap(your_hash, plain: true, indent: 0).html_safe %>
また、スタイルをハッシュビューに設定するための値を変更することもできます
与えられた応答は正常に機能しますが、より美しく、よりカスタムのきれいなハッシュが必要な場合は、 awesome_print を使用してください。
require 'awesome_print'
hash = JSON['{"a":"1","b":"2","c":"3","asefw":"dfsef"}']
ap hash
乾杯!