在HTML中显示格式化的JSON,而无需JavaScript(RubySinatra)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在HTML中显示格式化的JSON,而无需JavaScript(RubySinatra)。相关的知识,希望对你有一定的参考价值。

我正在用Ruby + Sinatra构建一个实践性的Web API,我希望我的响应能以格式化的JSON(GeoJSON)显示在一个ERB模板中。到目前为止,我已经能够处理请求并正确格式化响应。

然而,我无法找到一种方法来将端点中的内容显示为JSON字符串,它显示为一个常规的字符串(对于JSON来说很难读取)。有没有什么方法可以在Ruby+Sinatra中不使用javascript来实现呢?

这是我目前在这两个文件中的情况。

# app.rb

before do
    json = File.open("data/cities.json").read
    data = JSON.parse(json)
    data.each do |item|
        geoarray["features"].append(json_to_geojson(item))
    end
    @geojson = geoarray.to_json
end

...

get('/myendpoint') do
    @activities = @geojson
    erb :cities
end
<!--cities.erb-->

<%= @activities %>
答案

尝试 <%= @activities.to_json.html_safe %>

另一答案

你可以通过使用以下方法让JSON字符串看起来更漂亮 JSON.pretty_generate() 方法。

# app.rb
before do
    json = File.open("data/cities.json").read
    data = JSON.parse(json)
    data.each do |item|
        geoarray["features"].append(json_to_geojson(item))
    end

    # use pretty_generate instead of to_json 
    @geojson = JSON.pretty_generate(geoarray)
end

并在你的erb文件中。不是简单的显示,而是在你的erb文件中添加 <pre> 标签。

<!--cities.erb-->

<pre><%= @activities %></pre>

引用

以上是关于在HTML中显示格式化的JSON,而无需JavaScript(RubySinatra)。的主要内容,如果未能解决你的问题,请参考以下文章

HTML/Javascript 表单 如何将表单数据序列化为 JSON 并在类中显示?

Laravel 以 json 格式显示/返回数据,而不是以 html 格式显示/返回数据

发送带有 json 的 html 文件并让浏览器重新加载该 json 而无需重新加载页面

流媒体视频如何工作?

JavaS:网页中的显示和隐藏

Ajax第一课 Ajax访问Servlet解析Json格式