Thread overview
Line breaks in JSON
May 10, 2018
bachmeier
May 10, 2018
rikki cattermole
May 10, 2018
bachmeier
May 10, 2018
jmh530
May 10, 2018
bachmeier
May 10, 2018
jmh530
May 10, 2018
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 11, 2018
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
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
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
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
On Thursday, 10 May 2018 at 18:21:17 UTC, bachmeier wrote:
> [snip]
>
> I used replace("\\n", "\n")

Ah, I always forget the extra \.