2013-09-23 5 views
0

Я использую Json.NET для сериализации моих объектов в памяти для json. Когда я звоню следующие строки кода:Устранение новых строк в поле json

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

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

я получаю следующее в текстовом файле:

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

запрос является объект, который я вытащил из базы данных, которая имеет значение строки. Когда я использую xml и пишу в файл (используя XDocument), новые строки в строке (а также \ t) должным образом разрешаются на вкладки и новые строки в файле. Можно ли получить такой же эффект здесь с json.Net?

ответ

0

Символы прерывания строки и табуляции недействительны в значениях JSON, а JSON.net не будет отображать \ t и \ n на вкладку символов разрыва строки. Чтобы отобразить это хорошо, вы можете сделать:

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

Однако, если вы сделаете это, текст, который вы пишете будет недействительна JSON, и вы должны удалить вкладку и разрывы строк, когда вы читаете это назад, если вы хотите десериализовать его.

Смежные вопросы