如何在Ruby on Rails中将JSON文件转换为html页面?

时间:2017-03-01 13:13:53

标签: html ruby-on-rails json ruby

我正在编写一个网站,它将URL获取参数作为JSON文件的链接,并将其转换为外观漂亮的html页面(即不是表格)。部分内容需要一个递归函数来解析JSON文件。我想要的是看起来像html标题的键。数组中的每个值都在一个单独的行上,而字符串中的每个值都有一个粗体键,其值在同一行上。最重要的是,我希望页面缩进JSON文件的内容,就像您希望缩进JSON文件一样。

1 个答案:

答案 0 :(得分:1)

我认为这个递归函数可以很好地将JSON文件转换为漂亮的html页面。

def parse(hash, iteration=0 )
    iteration += 1
    output = ""
    hash.each do |key, value|

        if value.is_a?(Hash)
            output += "<div class='entry' style='margin-left:#{iteration}em'> <span style='font-size:#{250 - iteration*20}%'>#{key}: </span><br>"
            output += parse(value,iteration)
            output += "</div>"
        elsif value.is_a?(Array)
            output += "<div class='entry' style='margin-left:#{iteration}em'> <span style='font-size:#{250 - iteration*20}%'>#{key}: </span><br>"
            value.each do |value|
                if value.is_a?(String) then
                    output += "<div style='margin-left:#{iteration}em'>#{value} </div>"
                else
                    output += parse(value,iteration-1)
                end
            end
            output += "</div>"

        else
            output += "<div class='entry' style='margin-left:#{iteration}em'> <span style='font-weight: bold'>#{key}: </span>#{value}</div>"
        end
    end
    return output
end

以下是它的工作原理。您通过将JSON文件转换为哈希值来传递哈希值:

    jsonFile = JSON.load(open(params["url"] ))
    @output = parse(jsonFile)

该函数检查散列中的每个值,并执行以下三项操作之一:

  1. 如果是数组,则在新行上输出每个数组元素
  2. 如果是字符串,则输出键和同一行的值
  3. 如果是另一个Hash调用相同的函数
  4. 在此之后,您只需将@output变量输出到视图文件的屏幕上:

    <%= @output.html_safe %>
    

    迭代的作用是跟踪调用函数的次数,以便输出可以正确缩进

    我希望这可以帮助那些试图做同样事情的人。