JavaScriptを有効にしてください

【Elixir】MixプロジェクトでJasonを導入し、config.exsで使用する方法

 ·  ☕ 3 分で読めます

【Elixir】MixプロジェクトでJasonを導入し、config.exsで使用する方法

ElixirプロジェクトでJSONエンコーディングとデコーディングを行うために、Jasonライブラリを導入し、無理やりconfig.exsで使用する方法について

プロジェクトのセットアップ

まず、新しいMixプロジェクトを作成します。

1
2
mix new jason_example
cd jason_example

Jasonライブラリの導入

mix.exsファイルにJasonライブラリを依存関係として追加します。

1
2
3
4
5
defp deps do
  [
    {:jason, "~> 1.2"}
  ]
end

その後、以下のコマンドを実行して依存関係を取得します。

1
mix deps.get

config.exsでのJasonの使用

config/config.exsファイルにJasonを使用してJSONデータを読み込むコードを追加します。

普通だったらこのように import したりすれば使用できるのですが config.exs などではエラーが出てきます。

1
import Jason

ではどのように実行するかです。

サンプルコード

プロジェクトのルートにあるlib/jason_example.exファイルを編集し、config.exsで設定した値を読み込むサンプルコードを追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import Config

# サンプルJSON文字列(実際には機密情報や環境変数から取得することが推奨されます)
app_secret = ~s({
  "api_key": "1234567890abcdef",
  "endpoint": "https://api.example.com",
  "timeout": 30
})

# JSONライブラリを動的に読み込み、デコード
app_config =
  try do
    # JSONライブラリのパスを追加
    Code.prepend_path("_build/#{Mix.env()}/lib/jason/ebin")

    # JSON文字列をデコード
    case Jason.decode(app_secret) do
      {:ok, decoded} ->
        IO.inspect(decoded)
        decoded

      {:error, reason} ->
        IO.puts("JSONのデコードに失敗しました: #{reason}")
        %{}
    end
  rescue
    e in Jason.DecodeError ->
      IO.puts("例外: 無効なJSON文字列です: #{e}")
      %{}
  catch
    kind, reason ->
      IO.puts("エラーが発生しました: #{kind} - #{reason}")
      %{}
  end

# デコードされたデータをConfigに設定
config :my_app, :app_config, app_config

まとめ

このガイドでは、Elixir MixプロジェクトでJasonライブラリを導入し、config.exsでJSONデータを読み込んで設定として使用する方法を紹介しました。以下に重要なポイントをまとめます。

  • mix.exsファイルにJasonライブラリを依存関係として追加。
  • config.exsでJasonを使用してJSONデータをデコードし、Configに設定。
  • アプリケーションの開始時に設定されたJSONデータを読み込み、使用。

この方法を使用することで、Elixirプロジェクトで柔軟にJSONデータを扱うことができます。かなり無理矢理やっていますが苦肉の策です……

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer