Phoenix.Controller.json(conn, data)
にかなりのJSONを出力する方法はありますか?フェニックスコントローラでかなりのJSONを出力させる
7
A
答えて
12
Phoenix.Controller.json/2
は、現在、JSONエンコーダに渡すことのできるオプションを受け付けていません。
すべてのjson
呼び出しでpretty JSONが出力されるようにする場合は、Poison
のラッパーを作成してPhoenixに使用させることができます。
lib/my_app/pretty_poison_encoder_for_phoenix.ex
では、追加:
defmodule MyApp.PrettyPoisonEncoderForPhoenix do
def encode_to_iodata!(data) do
Poison.encode_to_iodata!(data, pretty: true)
end
end
そしてconfig/config.exs
で
config :phoenix, :format_encoders, json: MyApp.PrettyPoisonEncoderForPhoenix
サーバーを再起動した後、すべてのあなたのjson
のコールは自動的にきれいなJSONを印刷する必要があります。
dev
に出力したい場合は、上記のコードをconfig/dev.exs
に追加してください。それを行うと、prod
はまだきれいでないJSONを出力します。
またPhoenix.Controller.json/2
が何を行い、簡単なラッパーを作成することができます(ほとんど、下記の注を参照)だけでなく、かなりの出力を行います
def pretty_json(conn, data) do
conn
|> put_resp_header("content-type", "application/json; charset=utf-8")
|> send_resp(200, Poison.encode!(data, pretty: true))
end
使用法:
def index(conn, _params) do
pretty_json conn, [%{a: 1, b: 2}, %{c: 3, d: 4}]
end
出力を:
➜ curl localhost:4000
[
{
"b": 2,
"a": 1
},
{
"d": 4,
"c": 3
}
]
注:コンテンツタイプが存在しない場合は、コンテンツタイプを追加するだけであるため、これは正確にPhoenix.Controller.json/2
に相当しません。 hereからいくつかのコードをコピーして、同じロジックを使用することができます。
関連する問題
- 1. json入力をSuaveで出力しますが、出力されません
- 2. フェニックスコントローラのアクションのリファクタリング
- 3. JAX RS、json出力で配列が見つかりません
- 4. dataimport rawステータス出力をJsonに出力できません
- 5. クラクションのJSONかなり印刷出力 "[" 結果 "]"
- 6. 制限付き入力と出力可能な出力を一致させるアルゴリズムはありますか?
- 7. JSONの出力が乱れるのはなぜですか?
- 8. PHPでネストされたJSON出力
- 9. JSONソースからPython-JSON形式を取り出せません
- 10. PHPのJSONエンコード出力ではない私はVARダンプではなく、JSONコードになり得るもの
- 11. Pyramid jsonレンダラに、出力形式の、きれいな印刷出力を得る方法はありますか?
- 12. Apache 2はデフォルトでjson出力を出力しますか?
- 13. 角度2 - JSON(TypeScript)から値を出力できません
- 14. XMLHttpRequestからJSON出力を取得できません
- 15. ランダムな順序で出力される2つのJSON結果をアサートする
- 16. スマートテンプレートのJSON出力
- 17. Symfony2の出力JSON
- 18. Gsonカスタムデシリアライズ異なるJSON出力
- 19. 有効なJSONをPythonのFORループから出力する
- 20. JSON出力シーケンス
- 21. JSON出力Java
- 22. JSON出力
- 23. カスタマイズJSON出力
- 24. JSON出力()
- 25. JSONフレンドリーな出力としてフェッチされた配列の返り値
- 26. なぜpprofileは出力を出さないのですか?
- 27. RailsからネストされたJSON出力を取得する
- 28. Jsonの出力は、レシートとは異なります
- 29. Pythonでjson出力を作成する
- 30. RazorビューエンジンでJsonを出力する