[erlang-questions] fast JSON parser in C

Serge Aleynikov <>
Sat Jul 26 03:48:33 CEST 2008


Bob Ippolito wrote:
> On Fri, Jul 25, 2008 at 4:12 AM, Serge Aleynikov <> wrote:
>> Also, this is not specific to the thread, but while on this subject, I
>> don't quite understand why JavaScript Object Notation (JSON) is so
>> heavily demanding double quoting everything in contrast to the
>> JavaScript Object Notation built into all browsers.  What I mean is that
>> the javascript interpreters built into browsers happily understand this
>> notion of an object:
>>
>>        {foo: 1, bar: "value"}
>>                or
>>        {foo: 1, bar: 'value'}
>>
>>
>> whereas in JSON this would require to be written as:
>>
>>        {"foo": 1, "bar": "value"}
> 
> ... because it is a lot simpler and easier to write correct
> implementations if you remove extraneous features. Ease of
> interoperability is more important than aesthetic or compactness. If
> you want something convenient for humans you should implement YAML,
> but good luck writing a correct parser for that in a reasonable amount
> of time ;)

While generally your statement above is impeccable when it comes to 
"fancy" features, given the simplicity of this requirement, I don't see 
how removing double quotes from object properties would *significantly* 
complicate the parser.  In fact, I have done this customization of the 
publicly available json.erl implementation and if I recall it only 
involved changes to a couple of lines of code to support this feature.

Not sure about others but I do find this "variant of JSON" more 
convenient when it comes to debugging JavaScript in a browser (using 
Firebug debugger) as it is visually more compact and not taking as much 
of screen real estate.

>> The first form seems more natural for an Erlang programmer, and if JSON
>> BIF parser is included in the OTP, perhaps a customization to support
>> this variant of the format would be a worthwhile addition as most
>> frequently JSON is used for interaction with browsers that happily
>> accept the first, more compact, form.
> 
> That's just a bad idea. If you intend to do that, don't call it JSON
> because it's not.
> Not every JSON client is a JavaScript interpreter
> using eval(). 

Perhaps using JSON name for the JSON protocol was a misnomer in the 
first place, as it has very little to do with JavaScript other than 
resembling its object notation?

Serge



More information about the erlang-questions mailing list