[英]How to convert ruby formatted json string to json hash in ruby?
[英]Ruby String to formatted JSON
我已經從Nokogiri的頁面中刪除了部分數據。
require 'net/http'
require 'nokogiri'
require 'open-uri'
require 'json'
sources = {
cb: "http://www.cbbankmm.com/fxratesho.php",
}
puts "Currencies from CB Bank are"
if @page = Nokogiri::HTML(open(sources[:cb]))
(1..3).each do |i|
puts @page.css("tr")[i].text.gsub(/\s+/,'')
end
end
結果是
Currencies from CB Bank are
USD873883
SGD706715
EURO11241135
我想將輸出格式化為以下JSON格式
{
"bank":"CB",
"rates": {
"USD":"[873,883]",
"SGD":"[706,715]",
"EURO":"[1124,1135]"
}
}
我必須使用哪種寶石,方法來獲得上述哈希或JSON格式?
一些抽象可能是一個想法。 因此,也許有一個課程可以幫助您完成工作:
class Currencies
def initialize(page, bank)
@page = page
@bank = bank
end
def parsed
@parsed ||= @page.css("tr").collect{ |el| el.text.gsub(/\s+/,'') }
end
def to_hash
{
bank: @bank,
rates: {
USD: usd,
SGD: sgd,
....
}
}
end
def usd
parsed[0].gsub(/^USD/, '')
end
def sgd
parsed[1].gsub(/^SGD/, '')
end
...
end
這樣使用
Currencies.new(Nokogiri::HTML(open(sources[:cb])), "CB").to_hash.to_json
只需在Ruby中創建等效的哈希結構,然后執行例如
hash = {
"bank" => "CB",
"rates" => {
"USD" => "[873,883]",
"SGD" => "[706,715]",
"EURO" => "[1124,1135]"
}
}
hash.to_json
您已經包含了json
gem。 顯然,您在當前具有puts
語句的地方構建了Ruby哈希。
編輯:如果布局對您很重要,則您可能希望:
JSON.pretty_generate( hash )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.