【问题标题】:displaying JSON data in a Phoenix Template在 Phoenix 模板中显示 JSON 数据
【发布时间】:2016-11-27 09:32:40
【问题描述】:

我试图在模板中简单地显示一些数据。但显然我错过了一步。

使用 HTTPoison 请求

use HTTPoison.Base

@expected_fields ~w(result)   

def process_url(url) do
 "url.json"
end

def process_response_body(body) do
  body
  |> Poison.decode!
  |> Map.take(@expected_fields)
  |> Enum.map(fn({k ,v}) -> {String.to_atom(k), v} end)
end

控制器

 def index(conn, _params) do
  response = ApiTest.get!("").body[:result]
  render conn, "index.html", response: response
 end

模板

<%= @response %>

错误是: Phoenix.HTML 和模板中的列表可能只包含表示字节、二进制文件或其他列表的整数,获得无效条目

那么我在哪里将数据转换为可以在模板中显示的格式?

【问题讨论】:

  • 您是否有 html 模板并想在正文中添加 json 或者您想提供 json 响应?
  • 我有一个 html 模板,想从 json 响应中添加数据。

标签: elixir phoenix-framework


【解决方案1】:

从错误消息看来,响应 JSON 中的 result 键是包含列表的列表。如果您想要输出用于调试,两种常见的方法是使用Kernel.inspect 来获得类似iexPoison.encode! 中的表示来获得JSON 表示:

<%= inspect(@response) %>

<%= Poison.encode!(@response) %>

您可能希望将整个内容包装在 &lt;pre&gt; 标记中,以便在 inspect 中获得包装精美的输出:

<pre><%= inspect(@response) %></pre>

或者这样做+为Poison.encode!添加pretty: true

<pre><%= Poison.encode!(@response, pretty: true) %></pre>

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多