如何使用JSON.NET保存带有四个空格缩进的JSON文件?

我需要读取一个JSON配置文件,修改一个值,然后将修改后的JSON重新保存回该文件。JSON非常简单:

{

"test": "init",

"revision": 0

}

要加载数据并修改值,请执行以下操作:

var config = JObject.Parse(File.ReadAllText("config.json"));

config["revision"] = 1;

到目前为止,一切都很好; 现在,将JSON写回到文件中。首先,我尝试了这个:

File.WriteAllText("config.json", config.ToString(Formatting.Indented));

可以正确写入文件,但缩进只有两个空格。

{

"test": "init",

"revision": 1

}

从文档看来,在使用此方法时似乎无法传递任何其他选项,因此我尝试修改此示例,这将允许我直接设置Indentation和的IndentChar属性JsonTextWriter来指定缩进量:

using (FileStream fs = File.Open("config.json", FileMode.OpenOrCreate))

{

using (StreamWriter sw = new StreamWriter(fs))

{

using (JsonTextWriter jw = new JsonTextWriter(sw))

{

jw.Formatting = Formatting.Indented;

jw.IndentChar = ' ';

jw.Indentation = 4;

jw.WriteRaw(config.ToString());

}

}

}

但这似乎没有任何效果:文件仍然使用两个空格缩进写入。我究竟做错了什么?

回答:

问题是您正在使用config.ToString(),因此使用编写对象时,该对象已经被序列化为字符串并进行了格式化JsonTextWriter

使用序列化器将对象序列化到写入器:

JsonSerializer serializer = new JsonSerializer();

serializer.Serialize(jw, config);

以上是 如何使用JSON.NET保存带有四个空格缩进的JSON文件? 的全部内容, 来源链接: utcz.com/qa/400629.html

回到顶部