Potrzebuję odczytać plik konfiguracyjny JSON, zmodyfikować wartość, a następnie ponownie zapisać zmodyfikowany JSON z powrotem do pliku. JSON jest tak proste, jak to się robi:Jak zapisać plik JSON z czterema wcięciami spacji za pomocą JSON.NET?
{
"test": "init",
"revision": 0
}
Aby wczytać dane i zmodyfikować wartość to zrobić:
var config = JObject.Parse(File.ReadAllText("config.json"));
config["revision"] = 1;
tej pory tak dobrze; teraz, aby napisać JSON z powrotem do pliku. Najpierw próbowałem tego:
File.WriteAllText("config.json", config.ToString(Formatting.Indented));
Który zapisuje plik poprawnie, ale wcięcie to tylko dwie spacje.
{
"test": "init",
"revision": 1
}
Z dokumentacji, wygląda na to nie ma sposobu, aby przekazać wszelkie inne opcje w ten sposób, więc próbowałem modyfikując this example które pozwoliłyby mi bezpośrednio ustawić Indentation
i IndentChar
właściwości JsonTextWriter
określić ilość wcięcia:
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());
}
}
}
Ale to nie wydaje się mieć żadnego efektu: plik jest nadal zapisany z dwoma wcięciami. Co ja robię źle?
Tak, to było to: teraz wskazałeś, że to ma sens. Dzięki! –