我有類似:我如何將一個散列打印到Rails視圖?
{"a":"1","b":"2","c":"3","asefw":"dfsef"}
我想打印出來的觀點。什麼是最好的方式來做到這一點?
我試着解析它作爲JSON對象,並使用JSON.stringify
,但它似乎弄亂了縮進。
有什麼建議嗎?我不介意JavaScript解決方案。
我有類似:我如何將一個散列打印到Rails視圖?
{"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時,就以被髮送到瀏覽器。由於增加了空格,「漂亮」方面也意味着「臃腫」和「較慢」,但它對於診斷和理解結構中的內容非常有用,因此它可能適合您的需求。
有一點需要記住的是,當HTML被瀏覽器渲染時,空白被吞噬,所以空白消失。爲了避免這種情況,您必須將JSON輸出包裝在<pre>
塊中以保留空格和換行符。像這樣的東西應該工作:
<pre>
{
"a": "1",
"b": "2",
"c": "3",
"asefw": "dfsef"
}
</pre>
幾乎可以工作,這是我得到的:http://cl.ly/image/072q3O1B3T10 – chintanparikh
噢,和我的代碼:https://gist.github.com/chintanparikh/5856307 – chintanparikh
我不同意,如果你的產品是開發人員將使用的API然後乾淨的JSON可以是他們的祝福,並與gzip壓縮添加的空白不是很大的負擔。無論哪種方式,很高興有一個選擇漂亮打印或不在您的API。 –
給出的迴應是工作正常,但如果你想擁有更漂亮的自定義漂亮的散列,使用awesome_print
require 'awesome_print'
hash = JSON['{"a":"1","b":"2","c":"3","asefw":"dfsef"}']
ap hash
乾杯!
awesome_print hasof強制對齊哈希的不幸缺陷,所以=>值是對齊的,因爲它適合嵌套哈希(嵌套哈希值實際顯示在父哈希值的左邊)。 – jpwynn
<%= raw JSON.pretty_generate(hash).gsub(" "," ") %>
如果你(像我)發現,內置Ruby的JSON庫pretty_generate
選項不是「漂亮」夠了,我推薦我自己NeatJSON
寶石爲您的格式。
若要使用它gem install neatjson
,然後使用JSON.neat_generate
而不是JSON.pretty_generate
。
與Ruby的pp
一樣,它會在適合時將對象和數組保留在一行上,但是會根據需要將其包裝爲多個。例如:
{
"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?"}
]
}
它還支持各種formatting options來進一步自定義您的輸出。例如,冒號前/後有多少個空格?逗號之前/之後?在數組和對象的括號內?你想排序你的對象的鍵?你希望冒號排成一列嗎?
例如,使用例如哈希,你可以得到這些不同的輸出,這取決於你想要什麼:
// 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(主)>提出queried_object。pretty_inspect
您可以嘗試awesome_print工作得非常好寶石,並在您看來寫
<%= ap(your_hash, plain: true, indent: 0).html_safe %>
也可以更改值配置樣式湊視圖
你有一個字符串或這是一個哈希對象? – Dogbert
你讓我們猜你想要什麼,這是不公平的。我們無法猜測,因爲他們暫停了我們的思維能力。我們可以買一些線索嗎? –
看起來像你猜對了:)答案抽獎。 – Casper