Hacker News new | ask | show | jobs
by dvh 1174 days ago
For me 3 killer features of JSON are:

1. Parsing JSON doesn't require adding new firewall rules

2. There are no comments, so nobody will try to invent their own meta format or annotations in comments and instead they will put data in the JSON as they should

3. (When compared to JS) someone finally had the balls and picked one type of quotes, this makes making parser so much simpler.

3 comments

Not supporting comments in JSON was a huge mistake. Yes I'm sure that someone, somewhere has once added comment directives to a file that caused issues. But that's such a rare problem compared to the very real and damaging and annoying problem of not being able to add comments to config files (hello package.json) that it's definitely the wrong choice.

XML supports comments and I have not seen a single use of comment directives in it ever.

I have seen plenty of comment directives in programming languages, HDLs and so on. But they are usually used as hints, e.g. to linters or to control compiler warnings, and they work perfectly well and cause no problems at all in my experience.

You might say that Crockford didn't anticipate JSON being used for config files. Fair enough. But now that it is, it should support comments.

My recommendation is to use JSON5 since it has a distinct file extension and fixes some other things about JSON too (e.g. trailing commas, hex constants) without being full on YAML insane.

directives can just be put in adjacent fields anyways
> There are no comments, so nobody will try to invent their own meta format or annotations in comments and instead they will put data in the JSON as they should

It also means it's worse format for configs where you sometimes need to annotate a few nodes with comments.

Yep.

"comment": gets littered across the JSON... or temporary changes are copied and the original property name is invalidate with a prefix. The simple structure is gone, replaced with adhoc workarounds.

Similarly when you want to use a type not supported by JSON such as datetime or binary data, you might end up with "type":"binary" and use base64 or whatever in the value (shoehorning attribs) - when it really needs a schema to follow during parse and stringify. Or OpenAPI, which is hardly lightweight and really doesn't match the simplicity of JSON.

For configuration files I add an extra key "_" and a string with the comment as the value. I even add multiple "_" keys to the same object and never seen something break.
This is just a terrible comment format isn't it?
JSON could really use schemas as part of the main implementation.

Local schemas, not crazy remote schemas.

Or some sort of way to bless an "official" schema format.