如何在不修改 space 或缩进的情况下保存文件内容

How to save file content without modifying the space or indents

我正在使用以下代码读取和更新 text 文件。

    using (StreamReader r = new StreamReader(filepath))
    {
      var json = r.ReadToEnd();
      AppSettings rootObject = JsonConvert.DeserializeObject<Settings>(json);
      rootObject.Settings.Size = 20;
      output = JsonConvert.SerializeObject(rootObject);
    }

    //Save back to the same file
    File.WriteAllText(filepath, output);

读取文件内容之前是这样的

   {
       "Settings": {
           "Size": 220, 
   }

Post更新,文件内容单行显示如下

  {"Settings":{"Size":20}}

如何保留包含空格或缩进的文件。

您可以通过为 Formatting 提供 "Indented" 来指示 Json.NET 缩进输出:

output = JsonConvert.SerializeObject(rootObject , Formatting.Indented);

虽然这不一定会完全按照原始格式格式化文件,但它会以缩进方式输出。

Try it online

如果您需要进一步控制文本的缩进方式,您可以创建 JsonSerializer 的实例并将 JsonTextWriter 传递给它的 Serialize 方法。 JsonTextWriterIndentation(要缩进的字符数)和 IndentChar(要使用的字符,例如 space 的 ' ',或 '\t' 对于选项卡),它允许您控制结果。