std.jgrandson

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun Aug 3 00:16:04 PDT 2014


We need a better json library at Facebook. I'd discussed with Sönke the 
possibility of taking vibe.d's json to std but he said it needs some 
more work. So I took std.jgrandson to proof of concept state and hence 
ready for destruction:

http://erdani.com/d/jgrandson.d
http://erdani.com/d/phobos-prerelease/std_jgrandson.html

Here are a few differences compared to vibe.d's library. I think these 
are desirable to have in that library as well:

* Parsing strings is decoupled into tokenization (which is lazy and only 
needs an input range) and parsing proper. Tokenization is lazy, which 
allows users to create their own advanced (e.g. partial/lazy) parsing if 
needed. The parser itself is eager.

* There's no decoding of strings.

* The representation is built on Algebraic, with the advantages that it 
benefits from all of its primitives. Implementation is also very compact 
because Algebraic obviates a bunch of boilerplate. Subsequent 
improvements to Algebraic will also reflect themselves into improvements 
to std.jgrandson.

* The JSON value (called std.jgrandson.Value) has no named member 
variables or methods except for __payload. This is so there's no clash 
between dynamic properties exposed via opDispatch.

Well that's about it. What would it take for this to become a Phobos 
proposal? Destroy.


Andrei


More information about the Digitalmars-d mailing list