0

Json.NET を使用して、メモリ内のオブジェクトを 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 で同じ効果を得ることができますか?

4

1 に答える 1

0

改行文字とタブ文字は JSON 値では無効であり、JSON.net は実際には \t と \n をタブと改行文字にレンダリングしません。これをうまく表示するには、次のようにします。

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

ただし、それを行うと、記述しているテキストは無効な JSON になり、デシリアライズする場合は、読み返すときにタブと改行を取り除く必要があります。

于 2013-09-23T05:11:08.897 に答える