mochijson2 examples!

Go To


I'm a two-week old infant with regards to Erlang and Mochiweb. Earlier I had a system running on PHP and soon I realised that it wasn't going to be able to handle the kind of load I was expecting. So I decided to switch the backend to a Mochiweb based server. Right now I need to know how to implement JSON with Mochiweb. I'm fully aware of the existense of mochijson2 library, but being a beginner, I can't get around to figuring out how to use it. Could someone point me to some place where I can find examples of using this library or any other json library in erlang?

2009-06-16 07:43
by ErJab


The mochijson2 API essentially consists of just two functions, which (if you've downloaded mochiweb) can be used directly from the Erlang shell as follows:

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

There are some test cases at the bottom of mochiweb/src/mochijson2.erl that might also be helpful in understanding the mapping between JSON terms and Erlang terms.

2009-06-16 11:27
by NoName


Yeah, I had to spend a bunch of time in the source code to figure out what was going on. Actually, that describes a lot of my experience with Erlang. This has gotten me by, generating the JSON I need. Here's a quick example.

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

So in that example you can see how to make objects (which mochijson2 wants you to call structs), strings, integers and arrays. Good luck!

2009-06-17 06:08
by rik.the.vik


I suggest reading/watching/downloading Start Developing Web Applications on Erlang

2009-06-16 08:22
by jitter


Here are the equivalent erlang commands in addition to @rik.the.vik's comment:

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]}">>).
2013-08-27 22:22
by neowulf33