top | item 43599963

(no title)

CWIZO | 10 months ago

> Coming from this direction, the addition of commas feels like an evil plan to have more syntax errors, with no obvious benefit

It helps to learn your history before you criticise something and claim it is useless.

JSON is the way it is mainly because it is just JavaScript and that meant that every browser in the world already supported it before JSON was even invented. It is THE reason why it is as popular as it is.

discuss

order

sebazzz|10 months ago

It was just a matter of:

    var myObject = eval(httpResponseBody)

Of course, this is vulnerable to all kinds of issues so we got JSON parser, and later JSON became part of the Web API.

cosmotic|10 months ago

I remember the infinite loops stuffed into JSON results to prevent this sort of thing.

Xmd5a|10 months ago

If it is "just JavaScript", why the lack of comments ?

dharmab|10 months ago

Comments were intentionally excluded to prevent the use of parsing directives.

(Sadly, Crockford's post about this reasoning was on Google Plus and is no longer online.)

eastbound|10 months ago

Jokingly, why does Javascript have the semi-colon “;”

jfengel|10 months ago

I really with the semicolon weren't optional. Its "I'll take my best guess" parsing is maddening.

One that keeps killing me is:

    return
        (complicated-multi-line-computation)
Since it can put a semicolon at the end of the first line, it does. Which means the return value is undefined, and the rest of it is just some code that it never actually reaches. A linter will fix that, but I find the usual fix a bit ugly:

    return (
        (complicated multi line computation)
    )

jeroenhd|10 months ago

There are a few minor, uncommon edge cases, probably only encountered by minimisers, where automatic semicolon insertion may cause unintentional behaviour, so semicolons are required. One of the specs; https://262.ecma-international.org/7.0/#sec-rules-of-automat... (link from an earlier comment of like) spells it out in detail.

Tomte|10 months ago

The author knows that. Fourth paragraph.

pwdisswordfishz|10 months ago

If the author knows that, why even bother with writing a whole "what should have been" article? It could not have been any oher way.

sargstuff|10 months ago

Yet another example/demo of "Use the source!"

There is nothing in the JSON spec that prohibits pre/post non-json parsing search / replace 'end of line' marker with one or more commas.

JSON spec just tells one what the JSON parser expects, not what the end user needs/wants. (GPT-JSON not withstanding)

michaelcampbell|10 months ago

> > ... feels like an evil plan to have more syntax errors, with no obvious benefit

> ... before you criticise something and claim it is useless.

These 2 statements feel quite far apart.

jeroenhd|10 months ago

Relying on the inherent JavaScript compatibility hack has caused as many problems as it has solved. Plus, the additional of trailing commas made a mess of things once more, forcing developers to let go of the direct compatibility with many versions of JavaScript engines and redirecting them to specialised JSON APIs instead.

The easy solution would be to go the JavaScript route and make commas optional, like JavaScript does with semicolons. You could even introduce vague and easily forgotten rules about commas being inserted between oneliner dictionaries.

I think the question "why" is easily answered, but "why should it still" is more difficult.

randunel|10 months ago

Making things optional means you'd end up with the csv standard mess on json, let's not!

watwut|10 months ago

The easy solution is horrible solution. Pretty much all the projects set semicolons as mandatory for a reason.