digitalmars.D.learn - Unexpected behavior of std.json.toJSON
- Peter Sommerfeld (16/16) Jan 07 2013 Sample code:
- Adam D. Ruppe (9/11) Jan 07 2013 It is intentional. I searched the web for other json
- Peter Sommerfeld (6/16) Jan 07 2013 Thanks Adam! On the other hand: json is fine to be edited by humans and
Sample code: ------------------- import std.stdio; import std.json; void main(string[] args){ string text = "{ \"url\":\"http://www.boost.org\" }"; JSONValue json = parseJSON(text); writeln(toJSON(&json)); // prints: { "url":"http\/\/www.boost.org\" } // The same happens when writing to a file. } -------------------- The double slash "//" in the url is replaced by "\/\/". Is that a feature or a bug? If the former, what is the reason for this behavior and how to avoid it? Peter
Jan 07 2013
On Monday, 7 January 2013 at 23:16:51 UTC, Peter Sommerfeld wrote:The double slash "//" in the url is replaced by "\/\/". Is that a feature or a bug?It is intentional. I searched the web for other json implementations that do the same thing and came up with this link for why: http://stackoverflow.com/questions/1580647/json-why-are-forward-slashes-escaped "Allowing \/ helps when embedding JSON in a <script> tag, which doesn't allow </ inside strings, like Seb points out." There's no way to disable it in D's std.json, but you don't have to either - it is perfectly correct according to the standard.
Jan 07 2013
Thanks Adam! D. Ruppe:On Monday, 7 January 2013 at 23:16:51 UTC, Peter Sommerfeld wrote:Thanks Adam! On the other hand: json is fine to be edited by humans and in this case simple double slashes would be better. Thus a second bool value to discriminate both variants where preferable. No serious problem anyway ... PeterThe double slash "//" in the url is replaced by "\/\/". Is that a feature or a bug?It is intentional. I searched the web for other json implementations that do the same thing and came up with this link for why: http://stackoverflow.com/questions/1580647/json-why-are-forward-slashes-escaped "Allowing \/ helps when embedding JSON in a <script> tag, which doesn't allow </ inside strings, like Seb points out." There's no way to disable it in D's std.json, but you don't have to either - it is perfectly correct according to the standard.
Jan 07 2013