2009-07-01 16 views
14

Tengo un fragmento de cadena JSON, que quiero analizar en Erlang. Parece que:Análisis JSON en Erlang

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

Miré mochijson2, y un par de otros analizadores JSON, pero realmente no podía encontrar la manera de hacerlo. Cualquier ayuda muy apreciada!

+9

Eso es no es verdad JSON. Las claves deben ser citadas y no debe haber corchetes a su alrededor. – cdmckay

Respuesta

14

una vez que utilizó el erlang-json-eep-parser y probado en sus datos.

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 

Derecho, no le gusta el paréntesis.

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 

Y no le gustan las teclas no cotizados:

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

Eso se ve mejor.

Parece que sus datos son casi JSON, al menos en lo que se refiere a este analizador.

0

¿Has mirado http://www.json.org/?

o descargar "json4erlang" de aquí: json-and-json-rpc-for-erlang

+0

Lo siento, veo que el erlang-json-parser es "Servicio temporalmente no disponible" – Blauohr

+0

Sí, vi la implementación del RFC4627, pero cuando paso la cadena anterior como entrada a la función decode(), recibo un error "badarg". .. – thomas55

0

Su entrada no es bastante JSON - las claves necesitan ser citado, así:

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

Una buena biblioteca de Erlang manipular JSON es jsx