2009-06-16 14 views
16

Soy un bebé de dos semanas con respecto a Erlang y Mochiweb. Anteriormente tenía un sistema ejecutándose en PHP y pronto me di cuenta de que no iba a poder manejar el tipo de carga que esperaba. Así que decidí cambiar el backend a un servidor basado en Mochiweb. Ahora necesito saber cómo implementar JSON con Mochiweb. Soy plenamente consciente de la existencia de la biblioteca mochijson2, pero al ser un principiante, no puedo entender cómo usarlo. ¿Podría alguien dirigirme a algún lugar donde pueda encontrar ejemplos de cómo usar esta biblioteca o cualquier otra biblioteca json en erlang?mochijson2 ejemplos!

Respuesta

9

La API mochijson2 consiste esencialmente en sólo dos funciones, que (si has descargado mochiweb) se pueden utilizar directamente desde el shell de Erlang de la siguiente manera:

erl -pa path/to/mochiweb/ebin 
... 
1> mochijson2:decode(<<"[1,2,3]">>). 
[1,2,3] 
2> iolist_to_binary(mochijson2:encode([1,2,3])). 
<<"[1,2,3]">> 

Hay algunos casos de prueba en la parte inferior de mochiweb/src/mochijson2.erl que también pueden ser útiles para entender el mapeo entre los términos JSON y los términos de Erlang.

8

Sí, tuve que pasar un montón de tiempo en el código fuente para descubrir qué estaba pasando. En realidad, eso describe gran parte de mi experiencia con Erlang. Esto me ha ayudado, generando el JSON que necesito. Aquí hay un ejemplo rápido.

ERL :: {struct, [{strKey, <<"strVal">>}, {intKey, 10}, {arrayKey, [1, 2, 3]}]} 
JSON :: {strKey:"strVal", intKey:10, arrayKey:[1, 2, 3]} 

Así que en ese ejemplo se puede ver cómo hacer que los objetos (que mochijson2 quiere que la llames estructuras), cadenas, enteros y matrices. ¡Buena suerte!

1

Éstos son los comandos equivalentes Erlang además a comentario de @ rik.the.vik:

erl -pa path/to/mochiweb/ebin 
... 
iolist_to_binary(mochijson2:encode({struct, [{strKey, <<"strVal">>}, {intKey, 10}, {arrayKey, [1, 2, 3]}]})). 
mochijson2:decode(<<"{\"strKey\":\"strVal\", \"intKey\":10, \"arrayKey\":[1, 2, 3]}">>).