Ho bisogno di leggere un file di configurazione JSON, modificare un valore e quindi salvare di nuovo il JSON modificato nel file. Il JSON è così semplice come si arriva:Come faccio a salvare un file JSON con quattro spazi di rientro usando JSON.NET?
{
"test": "init",
"revision": 0
}
per caricare i dati e modificare il valore faccio questo:
var config = JObject.Parse(File.ReadAllText("config.json"));
config["revision"] = 1;
Fin qui tutto bene; ora, per scrivere nuovamente il JSON nel file. Per prima cosa ho provato questo:
File.WriteAllText("config.json", config.ToString(Formatting.Indented));
che scrive correttamente il file, ma il rientro è a soli due spazi.
{
"test": "init",
"revision": 1
}
Dalla documentazione, sembra che non c'è modo di passare tutte le altre opzioni in questo modo, così ho cercato di modificare this example che mi permettesse di impostare direttamente la Indentation
e IndentChar
proprietà del JsonTextWriter
per specificare la quantità di rientro:
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());
}
}
}
Ma questo non sembra avere alcun effetto: il file è ancora scritto con due spazi rientro. Che cosa sto facendo di sbagliato?
Sì, era così: ora lo hai indicato che ha perfettamente senso. Grazie! –