Pregunta

Estoy utilizando mochiweb y no sé cómo utilizar el codificador JSON para hacer frente a la estructura de datos compleja. ¿Cuál es la diferencia entre mochijson y mochijson2? ¿Hay algún buen ejemplo? Siempre tengo los siguientes errores:

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
¿Fue útil?

Solución

mochijson2 funciona con cadenas como binarios, enumera como matrices, y sólo descodifica UTF-8. mochijson decodifica y codifica puntos de código Unicode.

Para crear una estructura profunda que hice lo siguiente:

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]

Así que si recursiva crear su estructura de datos utilizando las listas a continuación, se le multa. No estoy seguro de qué estructuras profundas no son compatibles, pero que no parece ser, al menos no de la manera que está tratando de crear ellos. Tal vez alguien sabe de una manera más inteligente de hacer esto.

También puede comprobar fuera de este hilo: mochijson2 ejemplos

o

video Tutorial para comenzar a desarrollar aplicaciones web en Erlang

Otros consejos

T6={struct, [{hello,"asdf"},{from,"1"},{to, {a,"aa"}} ]}.

en lugar debe ser:

T6={struct, [{hello,"asdf"},{from,"1"},{to, {struct, [{a,"aa"}]}} ]}.

Las estructuras anidadas necesita tener el mismo estilo "struct" como el objeto de nivel superior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top