Andreas
Andreas

Reputation: 167

Convert a list to a JSON Object in erlang (mochijson)

i would really appreciate any help. I would like to convert this list

[[{id1,1},{id2,2},{id3,3},{id4,4}],[{id1,5},{id2,6},{id3,7},{id4,8}],[...]]

to a JSON object. Need some inspiration :) please help.

Thank you.

Upvotes: 1

Views: 2340

Answers (1)

Jr0
Jr0

Reputation: 2173

Since you asked for inspiration, I can immagine two directions you can take

  1. You can write code to hand-role your own JSON which, if your need is modest enough, can be a very light-weight and appropriate solution. It would be pretty simple Erlang to take that one data-structure and convert it to the JSON.

    "[[{\"id1\":1},{\"id2\":2},{\"id3\":3},{\"id4\":4}],[{\"id1\":5},{\"id2\":6} {\"id3\":7},{\"id4\":8}]]"

  2. You can produce a data-structure that mochiweb's mochijson:encode/1 and decode/1 can handle. I took your list and hand coded it to JSON, getting:

    X = "[[{\"id1\":1},{\"id2\":2},{\"id3\":3},{\"id4\":4}],[{\"id1\":5},{\"id2\":6},{\"id3\":7},{\"id4\":8}]]".

then I used mochison:decode(X) to see what structure mochiweb uses to represent JSON (too lazy to look at the documentation).

Y = mochijson:decode(X).
{array,[{array,[{struct,[{"id1",1}]},
                {struct,[{"id2",2}]},
                {struct,[{"id3",3}]},
                {struct,[{"id4",4}]}]},
        {array,[{struct,[{"id1",5}]},
                {struct,[{"id2",6}]},
                {struct,[{"id3",7}]},
                {struct,[{"id4",8}]}]}]}

So, if you can create this slightly more elaborate data structure then the one you are using, then you can get the JSON by using mochijson:encode/1. Here is an example imbeddied in an io:format statement so that it prints it as a string -- often you would use the io_lib:format/X depending on your application.

io:format("~s~n",[mochijson:encode(Y)]).
[[{"id1":1},{"id2":2},{"id3":3},{"id4":4}],[{"id1":5},{"id2":6},{"id3":7},{"id4":8}]]

Upvotes: 2

Related Questions