我有一个用JSON序列化的对象列表,并存储在磁盘上的文件中。我使用的是Newtonsoft JSON.net库。
我想以有效的方式更新其中一些存储对象,即不使用新的最新对象列表覆盖整个文件,我宁愿使用优雅且高性能的解决方案。像
这样的东西我设法使用JsonTextReader更改数据,但我不知道如何将更改写回打开的文件。
public void TestModifyObject(MyClass myClass) { using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) using (StreamReader sr = new StreamReader(fs)) using (JsonTextReader jr = new JsonTextReader(sr)) { JArray array = JArray.Load(jr); JToken foundToken = null; foreach (JToken jToken in array.Children()) { JToken val = jToken["MyValue"].Value(); if (val == myClass.MyValue) { foundToken = jToken; break; } } } if (foundToken != null) { JToken myClassToken = JToken.FromObject(myClass); foundToken.Replace(myClassToken); foreach (JToken jToken in array.Children()) { var newVal = jToken["MyValue"].Value(); Debug.WriteLine($"value: '{newVal}'"); // prints modified value } // Now, how do I write the changes back to the file? } }
感谢任何线索; - )