[Seaside] How to escape single quotes in generated JSON?
Sven Van Caekenberghe
sven at stfx.eu
Tue Feb 23 17:34:47 UTC 2016
Hi Mariano,
I am not sure what your specific problem is, but strings in JSON are delimited with double quotes and only double quotes should be escaped, not single quotes.
https://tools.ietf.org/html/rfc7158#page-8
NeoJSONWriter toString: { 'exception' -> 'a ''escape this'' aa' } asDictionary.
"'{""exception"":""a ''escape this'' aa""}'"
STON uses single quoted strings (like Smalltalk), hence escapes them.
STON toString: { 'exception' -> 'a ''escape this'' aa' } asDictionary.
"'{''exception'':''a \''escape this\'' aa''}'"
Note the confusing escaping done by Smalltalk, better inspect the results !!
This won't solve your problem though, I know.
Sven
> On 23 Feb 2016, at 17:37, Mariano Martinez Peck <marianopeck at gmail.com> wrote:
>
> Hi guys,
>
> I am trying to serialize a dictionary form Smalltalk with either NeoJSON or with Seaside's #asJson. Imagine something like this:
>
> | infoDict stream |
> stream := String new writeStream.
> infoDict := Dictionary new.
> infoDict at: 'exception' put: 'a ''escape this'' aa'.
>
> Note that the string of 'exception' may contain single quotes inside.
>
> Then, at some point I do:
>
> self requestContext responseGenerator response nextPutAll: (infoDict asJson).
>
>
> Problem is the string arrives without any escaping so....when I try to do this at client side from that string:
>
> jQuery.parseJSON(variableContainingThatString);
>
> I get an error as single quotes inside the double quotes do not seem allowed.
> I tried a lot of combinations of "JSON.stringify" or things like:
>
> variableContainingThatString.replace(/[\\"'']/g, ''\\$&'').replace(/\u0000/g, ''\\0'');
>
> but none work...
>
> So..I wonder...can I simply escape this from server side at the time I serialize to JSON? Any special way of doing this or I hack on the resulting string?
>
> Thanks in advance,
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
More information about the seaside
mailing list