如何在elixir / phoenix中进行自定义JSON编码/解码

问题描述 投票:-3回答:2

我来自php背景。我打算为凤凰城框架中的一个项目重写我的后端api。

我的前端期待这种格式的api json响应

{
  "totalCount": 2,
  "results": [
       {
          "idUser":1,
          "name": "test"
       },
       {
          "idUser":2
          "name": "test2"
       }
  ],
  "success": true,
  .....
}

响应中还有一些自定义属性。是否有任何库可以用来发送自定义JSON响应,而不会更改我的前端逻辑。

我查看了毒库,但我不太确定如何才能返回这样的响应。我是Elixir / Phoenix框架的新手。我真的很感激有任何帮助指出我正确的方向。

elixir phoenix-framework
2个回答
1
投票

凤凰城默认使用毒药。有一个辅助方法json可以像这样使用:

defmodule MyController do
  use Phoenix.Controller
  def result(conn, _params) do
    conn
    |> put_status(:ok)
    |> json(%{"totalCount" => 2,
              "results" => [
                 %{
                   "idUser" => 1,
                   "name" => "test"
                 },
                 %{
                   "idUser" => 2,
                   "name" => "test2"
                 }
               ],
               "success" => true
            })
  end
end

1
投票

这是一个例子。是结果应该是一个数组?

defmodule Test do
  def hello do
    Poison.encode!(
      %{
        "totalCount" => 2,
        "results" => [
          %{
            "idUser" => 1,
            "name" => "test"
          },
          %{
            "idUser" => 2,
            "name" => "test2"
          }
        ],
        "success" => true,
      }
    )
  end

end
Test.hello()
© www.soinside.com 2019 - 2024. All rights reserved.