Symfoware

Symfowareについての考察blog

elixir + exjsxでjsonのエンコード、デコード

FreeBSD 10.1 + elixir 1.05でjsonのエンコード、デコードを試してみます。

exjsxを使用することにしました。
exjsx


インストール



mixでインストールする方法もありますが、pkgで用意されていたので、
pkg installでインストールしました。


# pkg install elixir-exjsx






使い方



JSX.encodeでエンコード、JSX.decodeでデコードです。
リストやマップオブジェクトをエンコード、デコードできますね。

エンコード


iex(2)> JSX.encode %{"library" => "jsx", "awesome" => true}
{:ok, "{\"awesome\":true,\"library\":\"jsx\"}"}
iex(3)> JSX.encode [library: "jsx", awesome: true]
{:ok, "{\"library\":\"jsx\",\"awesome\":true}"}
iex(4)> JSX.encode ["a","list","of","words"]
{:ok, "[\"a\",\"list\",\"of\",\"words\"]"}





デコード


iex(7)> JSX.decode "{\"library\": \"jsx\", \"awesome\": true}"
{:ok, %{"awesome" => true, "library" => "jsx"}}
iex(8)> JSX.decode "[\"a\",\"list\",\"of\",\"words\"]"
{:ok, ["a", "list", "of", "words"]}





エンコードしたデータをデコードして表示。


iex(11)> {:ok, json} = JSX.encode %{"library" => "jsx", "awesome" => true}
{:ok, "{\"awesome\":true,\"library\":\"jsx\"}"}

iex(12)> {:ok, data} = JSX.decode json
{:ok, %{"awesome" => true, "library" => "jsx"}}

iex(13)> data["awesome"]
true
iex(14)> data["library"]
"jsx"









ファイルに保存、ファイルから読み込み



エンコードした内容をファイルに出力。
ファイルを読み込んでデコードしてみます。


# jsonな文字列を作成して、ファイルに出力
iex(18)> {:ok, json_str} = JSX.encode %{"library" => "jsx", "jp" => "日本語"}
{:ok, "{\"jp\":\"日本語\",\"library\":\"jsx\"}"}
iex(19)> File.write("data.json", json_str)
:ok

# ファイルから内容を読み取り、デコード実行
iex(20)> {:ok, map} = JSX.decode( File.read!("data.json") )
{:ok, %{"jp" => "日本語", "library" => "jsx"}}
iex(21)> map["library"]
"jsx"
iex(22)> map["jp"]
"日本語"


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/07/26(日) 23:23:06|
  2. Erlang
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<elixir + cowboyでwebアプリケーションを作成する その1 雛形 | ホーム | elixir CSVファイルを1行づつ読み込み、内容をMariaDBに登録する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1768-53272c64
この記事にトラックバックする(FC2ブログユーザー)