Мне нужно прочитать файл конфигурации 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());
}
}
}
Но это, похоже, не имеет никакого эффекта: файл все еще написан с двухступенчатым отступом. Что я делаю неправильно?