2009-07-01 17 views
14

Erlangで解析したいJSON文字列があります。ErlangでのJSONの解析

({ id1 : ["str1", "str2", "str3"], id2 : ["str4", "str5"]}) 

私はmochijson2を見て、他のJSONパーサーのカップルが、私は実際にそれを行う方法を見つけ出すことができませんでした:それは次のようになります。どのような助けが大いに感謝!

+9

真ではないJSON。キーは引用符で囲む必要があり、そのまわりには角括弧は使用しないでください。 – cdmckay

答えて

14

私はかつてerlang-json-eep-parserを使用して、データ上でそれを試してみました。

7> json_eep:json_to_term("({ id1 : [\"str1\", \"str2\", \"str3\"], id2 : [\"str4\", \"str5\"]})"). 
** exception error: no match of right hand side value 
        {error,{1,json_lex2,{illegal,"("}},1} 
    in function json_eep:json_to_term/1 

右はカッコが好きではありません。

8> json_eep:json_to_term("{ id1 : [\"str1\", \"str2\", \"str3\"], id2 : [\"str4\", \"str5\"]}"). 
** exception error: no match of right hand side value 
        {error,{1,json_lex2,{illegal,"i"}},1} 
    in function json_eep:json_to_term/1 

そして、それは引用符で囲まれていないキーを好きではない:

18> json_eep:json_to_term("{ \"id1\" : [\"str1\", \"str2\", \"str3\"], \"id2\" : [\"str4\", \"str5\"]}"). 
{[{<<"id1">>,[<<"str1">>,<<"str2">>,<<"str3">>]}, 
    {<<"id2">>,[<<"str4">>,<<"str5">>]}]} 

良く見えます。

あなたのデータはです。少なくとも JSONですが、少なくともこのパーサに関してはそうです。

0

あなたはhttp://www.json.org/を見ましたか?

または、こちらから「json4erlang」をダウンロード:json-and-json-rpc-for-erlang

+0

申し訳ありませんが、erlang-json-parserが「サービスは一時的に利用できません」というメッセージです – Blauohr

+0

はい、RFC4627の実装を見ましたが、上記の文字列をdecode()関数の入力として渡すと、「badarg」エラーが発生します。 .. – thomas55

1

あなたはJSONLintバリデータであなたのJSON上で動作することができます:http://www.jsonlint.com/

0

あなたの入力は非常にJSONではありません - キーは次のように、引用符で囲む必要があります。

{ "id1" : ["str1", "str2", "str3"], "id2" : ["str4", "str5"]} 

のために良いErlangのライブラリJSONの操作はjsx

0

https://www.ietf.org/rfc/rfc4627.txtに従って有効ではありません。あなたはそれを修正したら、ErlangのためのJSONライブラリがたくさんありますが、私のお気に入りは、JSX(https://github.com/talentdeficit/jsx/)です:

MyJSON = { "id1" : ["str1", "str2", "str3"], "id2" : ["str4", "str5"]}, 
jsx:decode(MyJSON, [return_maps]). 

そして、それはあなたのニーズに操作することができるErlangのマップデータ構造を返しますですhttp://learnyousomeerlang.com/maps