On Wed, Jan 18, 2017 at 04:38:15PM +0100, Sven Van Caekenberghe wrote:
Being a superset means that you get a simple JSON parser (and even limited writer) for free once you install STON (or once it is part of the Pharo image, as it is now). It also means that we can fall back to the JSON spec as a guide in discussion like this one. It also helps people understand what STON is, by analogy but also differences with JSON.
So my conclusion would be (while writing), always escape $\ and not $/, in pure STON mode (the default), escape $' and not $", in JSON mode, escape $" and not $'. Those would be the changes. Agreed ?
Yes for JSON, I guess yes for STON. (For me STON is effectively opaque representation (because of its DFS strategy), so I don't care too much about how it is stored (as long as it is not binary)) Thanks! Peter
Peter
On 18 Jan 2017, at 15:25, Peter Uhnak <i.uhnak@gmail.com> wrote:
On Wed, Jan 18, 2017 at 11:11:06AM +0100, Christophe Demarey wrote:
Le 18 janv. 2017 à 09:51, Sven Van Caekenberghe <sven@stfx.eu> a écrit :
Hi Christophe,
STON toString: 'git@github.com:foo/bar.gitâ => ''git@github.com:foo\/bar.gitâ' It used to be ''git@github.com:foo/bar.gitââ.
In other words, it was an implementation error (omission). Note that JSON also has this escape.
Yes and no for JSON.
Only " and \ has to be escaped. Escaping anything else will give it special meaning with the exception of / which will just produce the same thing, because it is a special snowflake. :)
quoted from https://tools.ietf.org/html/rfc7159#section-7:
- Unicode characters may be placed within the quotation marks, except for the characters that must be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F). - Alternatively, there are two-character sequence escape representations of some popular characters.
"/" (U+002F) doesn't fall into control character range, but the alternative section does permit it escaping it.
In other words, JSON strings "\/", and "/", and "\u002f" are equivalent.
But JSON itself doesn't require you to escape "/" (just like you are not required to escape "hi" into "\u0068\u0069", although you can).
Note that other systems do not escape / by default:
(Pharo) NeoJSONWriter toString: 'git@github.com:foo/bar.git' => "git@github.com:foo/bar.git"
(JavaScript) JSON.stringify('git@github.com:foo/bar.git') => "git@github.com:foo/bar.git"
(Ruby) require 'json' puts 'git@github.com:foo/bar.git'.to_json => "git@github.com:foo/bar.git"
Peter