emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: two json.el bugs


From: Drew Adams
Subject: RE: two json.el bugs
Date: Sun, 28 May 2017 17:42:25 -0700 (PDT)

> >> > If you're talking about JSON objects then no, no particular
> >> > meaning or behavior is defined for duplicate fields (keys)
> >> > in a JSON object.
> >> >
> >> > A given application that handles JSON object is free to
> >> > act as you say.  And it is free to act otherwise.
> >>
> >> Please see Theresa's initial post why this matters.
> >
> > It is generally good to preserve the order.  With
> > that general intention I agree.
> >
> > What's not true is that "in JSON the last one wins"
> > when there are duplicates.  JSON itself imposes no
> > such semantics.

> ECMA 404 doesn't specify anything about duplicate keys,

And rightfully so.

> but the JSON parser behavior

_JavaScript_ JSON parser behavior

> required by Section 24.3 of ECMA 262 does indeed.  It's
> not an implementation of course, but it does dictate how
> compliant JS implementations should handle JSON.

Yes, compliant _JavaScript_ implementations.

Is `json.el' intended to provide JavaScript handling
(compliant or not) of JSON data?  Dunno.

JavaScript is not JSON is not JavaScript.

JSON is almost, but not quite, a subset of JavaScript
object-literal notation (thus the name).  JSON allows
unescaped Unicode chars U+2028 (LINE SEPARATOR) and
U+2029 (PARAGRAPH SEPARATOR) in strings.  JavaScript
notation requires such control chars to be escaped in
strings.

JavaScript is one language that parses and makes use
of JSON data.  It is not the only one.

> From the end of listing 24.3.1.1:

(24.5.1.1 in the latest draft)
 
> It could be argued that Emacs does not need to have (or pretend
> to have) a 262-conforming parser. After all, it's not a JS
> interpreter. But as Tess mentioned, this particular point
> creates interoperability issues with conforming interpreters.

Other things being equal, Emacs should preserve the
order of JSON object fields, for maximum fidelity.

Emacs should at least provide a way to preserve the order.
And if there is no good reason to do otherwise then
preserving the order should be the default behavior.

Insofar as Emacs tries to handle JSON data as would a
_JavaScript_ parser, stringifier, or interpreter, yes,
it would be good for it to act similarly to what ECMA
262 prescribes.

But that's about JavaScript, not JSON.

Is `json.el' trying to provide a JavaScript parser for
JSON?  Dunno.  The names and comments talk only about
JSON and JSON parsing.  JavaScript parsing of JSON is
one way to go.  (I have nothing against that, a priori.)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]