2017-02-04 4 views
2

私はJSONマップとしてJavascriptで解析するためのErlangマップをJSON形式の文字列でエンコードしますか?

#{"breakfast" => "leftovers"} 

やエンコードなどのErlangのマップを取るしようとしています。

私は、例えばちょっとの間で

([email protected])27> binary_to_list(jiffy:encode(["alpha", "beta"])). 
"[[97,108,112,104,97],[98,101,116,97]]" 

をリストに変換しようとしたが、私はJSONオブジェクトにそれを変換する方法がわからないと思います。

私は「invalid_member_key

([email protected])28> jiffy:encode(#{"breakfast" => "egg sandwhich"}). 
** exception throw: {error,{invalid_object_member_key,"breakfast"}} 
    in function jiffy:encode/2 (src/jiffy.erl, line 97) 

を取得するマップを変換しようとすると、私はリストのためにかなりのフォーマッタを試してみましたが、私は改行を取得

([email protected])31> binary_to_list(jiffy:encode(["alpha", "beta"], [pretty])). 
"[\n [\n 97,\n 108,\n 112,\n 104,\n 97\n ],\n [\n 98,\n 101,\n 116,\n 97\n ]\n]" 

なぜこの作業ではないでしょうか? json_objectは

-type json_object() :: {[{json_string(),json_value()}]} 
         | #{json_string() => json_value()}. 

です。マップ変換が動作することを期待しています。私は検索を試み、JSONの読み込みに関するサンプルを見つけましたが、Erlangを読み込み可能なJSONに変換する実際の例は見つかりませんでした。

答えて

2

Erlangの文字列"hello"は単なる整数のリストです。 Erlangをエンコードするライブラリは、JSONにマップしてJSONリストとして文字列を解釈します。そのため、出力に整数のリストが表示されます。それはまた、あなたがに取る必要があるErlangのバイナリ、としてJSON文字列をデコードしますので

Food = #{<<"breakfast">> => <<"leftovers">>}, 
jiffy:encode(Food). 
%%= <<"{ \"breakfast\" : \"leftovers\" }">> 

jiffyに一貫性がある:あなたがマップ内の値として、Erlangのバイナリを使用する必要がJSON文字列を取得するために

アカウントjiffy:decode/1を使用しています。

関連する問題