JSONとして送信する前に、ヘビケースからラクダにマップのキーを変更したいと思います。どうやってやるの?すべてのレスポンスをラップする機能であるか、それともいくつかのより低いレベル、つまりポイズンで実行する必要がある機能でなければならないのでしょうか?snake_caseキーマップをelixir phoenixのキーマップに変換してからJSON
おかげ
JSONとして送信する前に、ヘビケースからラクダにマップのキーを変更したいと思います。どうやってやるの?すべてのレスポンスをラップする機能であるか、それともいくつかのより低いレベル、つまりポイズンで実行する必要がある機能でなければならないのでしょうか?snake_caseキーマップをelixir phoenixのキーマップに変換してからJSON
おかげ
これは、内蔵にしていることエリクサーを知らない多く:
iex> Macro.underscore "SAPExample"
"sap_example"
iex> Macro.camelize "sap_example"
"SapExample"
iex> Macro.camelize "hello_10"
"Hello10"
参照ドキュメント:http://elixir-lang.org/docs/stable/elixir/Macro.html#underscore/1
実装:https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/macro.ex#L1192
Inflexを使用してはるかに良いですライブラリ:https://github.com/nurugger07/inflex#underscore
iex> Inflex.underscore("camelCase")
"camel_case"
Macro.underscore/1
を使用する人もいますが、それは正しい方法ではありません。 Macro
モジュール自体statesので:
この機能は、それが
Macro
モジュールに属している理由だと 、言語識別子/トークンを強調するように設計されました。ユニコードをサポートしていないので、一般的な 文字列をアンダースコアリングするメカニズムとして使用しないでください。または、 文字はエリクシール識別子では無効です。
ですので、他のライブラリを使用することをお勧めします。 recase
を使用することをお勧めします。 camelCase
だけでなく、文字列をどのような場合でも変換できます。
サードパーティのライブラリであるため、インストールする必要があります。
deps
にmix.exs
に次の行を追加します。あなたはそれを使用する方法です{:recase, "~> 0.1"}
mix deps.get
:
Recase.to_camel("some-value")
# => "someValue"
Recase.to_camel("Some Value")
# => "someValue"
あなたはここにドキュメントを見つけることができます:https://hexdocs.pm/recase/readme.html
をそしてここのレポ:https://github.com/sobolevn/recase
乾杯!私はそれが言語でなければならないと思った、ちょうどそれがマクロモジュールにあることを期待していなかった:) – Nomad
それは一般的なライブラリから使用すべきではないからです。 'UnicodeやElixir識別子では無効な文字をサポートしていないため、文字列をカメライズする一般的なメカニズムとしては使用しないでください。 – Mattias