如何使用读/写模式更新json文件中的值

时间:2015-11-17 12:04:46

标签: .net json .net-4.0 json.net

我有一个用JSON序列化的对象列表,并存储在磁盘上的文件中。我使用的是Newtonsoft JSON.net库。

我想以有效的方式更新其中一些存储对象,即不使用新的最新对象列表覆盖整个文件,我宁愿使用优雅且高性能的解决方案。像

这样的东西
  • 以ReadWrite模式打开文件
  • 寻找正确的对象,例如使用LINQ to JSON
  • 修改/替换此对象
  • 刷新更改

我设法使用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?
    }
}

感谢任何线索; - )

0 个答案:

没有答案