Elixir 在发送json响应时,如何避免在phoenix中进行json解码?

Elixir 在发送json响应时,如何避免在phoenix中进行json解码?,elixir,phoenix-framework,Elixir,Phoenix Framework,例如,我有一个API客户机,它返回json(作为字符串,未解码)。现在,我不得不做这样的事情 def show(conn, params) do {:ok, json} = ApiClient.fetch(params["options"]) json conn, Poison.decode!(json) end 如果我避免中毒。解码,那么响应将是一个巨大的字符串而不是json。我能不能略去毒药。以某种方式解码?对我来说,这似乎是一种过分的行为 注意:我使用的是phoenix 1.3

例如,我有一个API客户机,它返回json(作为字符串,未解码)。现在,我不得不做这样的事情

def show(conn, params) do
  {:ok, json} = ApiClient.fetch(params["options"])

  json conn, Poison.decode!(json)
end
如果我避免中毒。解码,那么响应将是一个巨大的字符串而不是json。我能不能略去毒药。以某种方式解码?对我来说,这似乎是一种过分的行为

注意:我使用的是phoenix 1.3.0

函数可以将任何可序列化的数据结构作为JSON(包括字符串)发送

APIClient.fetch函数不是对响应进行JSON解码的函数,但是,如果字符串已经是JSON,则无需对其进行解码。您可以使用以下方式直接发送:

您可能还需要使用以下方法设置内容类型:

由于
json/2
函数将数据编码为json,假设json字符串:

"{\"hello\":\"world\"}"
您将对其进行两次编码,结果是:

"\"{\\\"hello\\\":\\\"world\\\"}\""

谢谢您的回答,但是您从哪里获得了
send_resp/4
功能?我在文档中找不到它。
put\u resp\u content\u type
也丢失了。我在Phoenix 1.3.0上这些来自插件-我已经在我的答案中添加了链接。
"{\"hello\":\"world\"}"
"\"{\\\"hello\\\":\\\"world\\\"}\""