如何使用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