[erlang-questions] json_to_term EEP

Chris Anderson jchris@REDACTED
Wed Jul 30 02:11:24 CEST 2008


I find this discussion very interesting. Thanks to everyone who has spoken up.

2008/7/28 Willem de Jong <w.a.de.jong@REDACTED>:
> How about a SAX-like API? See for
> example http://www.p6r.com/articles/2008/05/22/a-sax-like-parser-for-json/

CouchDB will definitely need a streaming JSON processor if we are to
handle giant documents without building them in memory. The example
SAX/JSON parser in C++ is a good read, it's making me want to
prototype something like that in Ruby. A SAX-like streaming tokenizer
seems like it could lend itself to a nice, lean implementation.


On the question of formats, I think any of the proplist formats would
be a good choice. Here's a look at is_array() for the proplist
options.

%(O)
is_array([{_,_}|_])  -> false;
is_array(T)          -> is_list(T).

%(B)
is_array(T)          -> is_list(T).

%(C)
is_array([T|_])      -> not is_tuple(T);
is_array(T)          -> is_list(T).


(B) has the simplest array/object test-functions and has the
parsing/writing advantage that it doesn't require you to look inside
each Erlang list, to see if it corresponds to a JSON array or object.
This means reading left-to-right you know immediately when you've
encountered a JSON array or object.

I'm not sure how heavy to weight the easy-to-read (especially as some
people could think of the {[]} format as harder to read due to the
extra {}.


Chris

-- 
Chris Anderson
http://jchris.mfdz.com



More information about the erlang-questions mailing list