Which Erlang JSON parser?

Alexander Kotelnikov <>
Thu Jul 29 11:01:24 CEST 2010


Hello.

It is a terrible story. I needed a JSON parcer to deal with JSON data in
my Erlang programm.

At first I picked json_eep
(http://github.com/jchris/erlang-json-eep-parser.git) which worked quite
fine, but later I found out that it is not able to parse (some!) escaped
unicode characters:
28> json_eep:json_to_term("\"\\u0433\\u043e\\u0440\\u043e\\u0434\"").
** exception error: bad argument
     in function  list_to_binary/1
        called as list_to_binary([1075,1086,1088,1086,1076])
     in call from json_grammar:yeccpars2_9/7
     in call from json_grammar:yeccpars0/2
     in call from json_eep:json_to_term/1

My guess is that just a little change near list_to_binary should fix the
problem.


Then I start investigation of other parsers. I found around 7. Most of
them not eep0018 parsers. So I tried
http://github.com/davisp/eep0018.git
and
http://github.com/dizzyd/eep0018.git (both are based on yajl).

The former did not build for me because of some rebar issues. The latter
did after some changes to Makefiles. A little problem with it is that I
do not understand, how it decodes unicode:
1> eep0018:json_to_term("\"\\u0433\\u043e\\u0440\\u043e\\u0434\"").
<<208,179,208,190,209,128,208,190,208,180>>

Probably authors of these modules read this list and will clarify and/or
fix if there is something to fix. 

Thanks, A.

PS And, just in case if anyone cares, none of these parsers implements
json_to_term/2.


More information about the erlang-questions mailing list