Erlangでデータ構造をエンコードするためにmochijsonを使用する方法?
質問
私はmochiwebを使用していると私は複雑なデータ構造を扱うために、そのJSONエンコーダーを使用する方法がわかりません。 mochijsonとmochijson2との違いは何ですか?何か良い例はありますか?私はいつも、以下のエラーが出ます:
46> T6={struct,[{hello,"asdf"},{from,"1"},{to,{a,"aa"}}]}.
{struct,[{hello,"asdf"},{from,"1"},{to,{a,"aa"}}]}
47> mochijson2:encode(T6).
** exception exit: {json_encode,{bad_term,{a,"aa"}}}
in function mochijson2:json_encode/2
in call from mochijson2:'-json_encode_proplist/2-fun-0-'/3
in call from lists:foldl/3
in call from mochijson2:json_encode_proplist/2
39> T3={struct,[{hello,"asdf"},{[{from,"1"},{to,"2"}]}]}.
{struct,[{hello,"asdf"},{[{from,"1"},{to,"2"}]}]}
40> mochijson:encode(T3).
** exception error: no function clause matching mochijson:'-json_encode_proplist/2-fun-0-'({[{from,"1"},{to,"2"}]},
[44,"\"asdf\"",58,"\"hello\"",123],
{encoder,unicode,null})
in function lists:foldl/3
in call from mochijson:json_encode_proplist/2
解決
mochijson2アレイなどのバイナリ、リストなどの文字列を使用しています、とだけUTF-8をデコードします。 mochijsonをデコードし、Unicodeコードポイントを符号化します。
私は次のことをやった深い構造体を作成するには:
2> L = {struct, [{key2, [192]}]}.
{struct,[{key2,"?"}]}
3>
3> L2 = {struct, [{key, L}]}.
{struct,[{key,{struct,[{key2,"?"}]}}]}
4>
4> mochijson:encode(L2).
[123,"\"key\"",58,
[123,"\"key2\"",58,[34,"\\u00c0",34],125],
125]
あなたは再帰的にリストを使用してデータ構造を作成する場合は、それでは、あなたは大丈夫です。深い構造体がサポートされていない理由を私はわからないんだけど、彼らは、少なくともではない方法で、あなたがそれらを作成しようとしている、していないようです。たぶん他の誰かがこれを行うには、より巧妙な方法を知っています。
また、このスレッドをチェックアウトすることができます! mochijson2例の
または
ビデオチュートリアルは、Erlangのの上のWebアプリケーションの開発を開始するには、
他のヒント
T6={struct, [{hello,"asdf"},{from,"1"},{to, {a,"aa"}} ]}.
の代わりにする必要があります:
T6={struct, [{hello,"asdf"},{from,"1"},{to, {struct, [{a,"aa"}]}} ]}.
ネストされた構造は、トップレベルのオブジェクトと同じ「構造体」のスタイルを持っている必要があります。
所属していません StackOverflow