will
will

Reputation: 1407

Resolving new lines within a json field

I have been using Json.NET to serialize my objects in memory to json. When I call the following lines of code:

        string json = JsonConvert.SerializeObject(template, Formatting.Indented);

        System.IO.File.WriteAllText(file, json);

I get the following in a text file:

{
  "template": {
    "title": "_platform",
    "description": "Platform",
    "queries": [
      {
        "query": "// *******************************\n// -- Remove  from DurationWindow at the end  \n// *******************************\t\n"
      }
    ],
    "metadata": ""
  }
}

a query is an object I pulled out of the database, that has a string value. When I use xml and write to file (Using XDocument), the new lines in the string (as well as the \t) are properly resolved into tabs and new lines in the file. Is it possible to get the same effect here with json.Net ?

Upvotes: 0

Views: 7685

Answers (1)

Val Akkapeddi
Val Akkapeddi

Reputation: 1183

The line-break and tab chars are not valid in JSON values, and JSON.net won't render \t and \n into tab & line break characters actually. To display this nicely, you could do:

var withLineBreaks = json.Replace("\\n", "\n").Replace("\\t", "\t");

However if you do that, the text that you're writing will be invalid JSON, and you'll have to strip out tab and line breaks when you read it back if you want to deserialize it.

Upvotes: 1

Related Questions