www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Line breaks in JSON

reply bachmeier <no spam.net> writes:
I'm using std.json for the first time. I want to download the 
contents of a markdown file from a web server. When I do that, 
the line breaks are escaped, which I don't want. Here's an 
example:

import std.conv, std.json, std.stdio;

void main() {
	string data =
"This is a paragraph
with line breaks
that shouldn't appear
when the file is loaded
in a text editor.";
   string msg = JSONValue(["markdown": data]).toString;
   string msg2 = parseJSON(msg)["markdown"].to!string;
   writeln(data);
   writeln(msg2);
}

Output:

This is a paragraph
with line breaks
that shouldn't appear
when the file is loaded
in a text editor.
"This is a paragraph\nwith line breaks\nthat shouldn't 
appear\nwhen the file is loaded\nin a text editor."
May 10 2018
parent reply rikki cattermole <rikki cattermole.co.nz> writes:
On 11/05/2018 2:56 AM, bachmeier wrote:
 I'm using std.json for the first time. I want to download the contents 
 of a markdown file from a web server. When I do that, the line breaks 
 are escaped, which I don't want. Here's an example:
 
 import std.conv, std.json, std.stdio;
 
 void main() {
      string data =
 "This is a paragraph
 with line breaks
 that shouldn't appear
 when the file is loaded
 in a text editor.";
    string msg = JSONValue(["markdown": data]).toString;
    string msg2 = parseJSON(msg)["markdown"].to!string;
    writeln(data);
    writeln(msg2);
 }
 
 Output:
 
 This is a paragraph
 with line breaks
 that shouldn't appear
 when the file is loaded
 in a text editor.
 "This is a paragraph\nwith line breaks\nthat shouldn't appear\nwhen the 
 file is loaded\nin a text editor."
You'll need to unescape them (which is pretty easy, a simple replacement here). For reference, this is invalid json[0]: ``` { "1 2 3 " } ``` [0] https://jsonlint.com/
May 10 2018
next sibling parent bachmeier <no spam.net> writes:
On Thursday, 10 May 2018 at 15:01:57 UTC, rikki cattermole wrote:

 You'll need to unescape them (which is pretty easy, a simple 
 replacement here).

 For reference, this is invalid json[0]:

 ```
 {
 	"1
 	2
 	3 "
 }
 ```

 [0] https://jsonlint.com/
So I see the answer is that I don't understand json. A search reveals that this is a common mistake.
May 10 2018
prev sibling parent reply jmh530 <john.michael.hall gmail.com> writes:
On Thursday, 10 May 2018 at 15:01:57 UTC, rikki cattermole wrote:
 [snip]

 You'll need to unescape them (which is pretty easy, a simple 
 replacement here).

 For reference, this is invalid json[0]:

 ```
 {
 	"1
 	2
 	3 "
 }
 ```

 [0] https://jsonlint.com/
I don't see an unescape function in phobos and below doesn't seem to work string msg2 = parseJSON(msg)["markdown"].to!string.replace("\n", " ");
May 10 2018
parent reply bachmeier <no spam.net> writes:
On Thursday, 10 May 2018 at 17:59:26 UTC, jmh530 wrote:
 On Thursday, 10 May 2018 at 15:01:57 UTC, rikki cattermole 
 wrote:
 [snip]

 You'll need to unescape them (which is pretty easy, a simple 
 replacement here).

 For reference, this is invalid json[0]:

 ```
 {
 	"1
 	2
 	3 "
 }
 ```

 [0] https://jsonlint.com/
I don't see an unescape function in phobos and below doesn't seem to work string msg2 = parseJSON(msg)["markdown"].to!string.replace("\n", " ");
I used replace("\\n", "\n")
May 10 2018
parent jmh530 <john.michael.hall gmail.com> writes:
On Thursday, 10 May 2018 at 18:21:17 UTC, bachmeier wrote:
 [snip]

 I used replace("\\n", "\n")
Ah, I always forget the extra \.
May 10 2018