Json class 保存一个值同时包含其他默认值

Json class saving a value while containing other default values

嘿,我想弄清楚如何在我的 JSON class 中只保存一个值,而不必用“新建”。我正在使用牛顿 JSON.Net.

这是我的 JSON 结构:

public class GV
{
  public class Data
  {
    [JsonProperty("pathForNESPosters")]
    public static string PathForNESPosters { get; set; }
    [JsonProperty("pathForSNESPosters")]
    public static string PathForSNESPosters { get; set; }
    [JsonProperty("pathForSEGAPosters")]
    public static string PathForSEGAPosters { get; set; }
    [JsonProperty("pathToNESContent")]
    public static string PathToNESContent { get; set; }
    [JsonProperty("pathToSNESContent")]
    public static string PathToSNESContent { get; set; }
    [JsonProperty("pathToSEGAContent")]
    public static string PathToSEGAContent { get; set; }
    [JsonProperty("lastSavedVolume")]
    public static double LastSavedVolume { get; set; }
  }

  public class Root
  {
    public Data data { get; set; }
  }

而且我可以毫无问题地将文件中的数据加载到我的 class:

GV.Root myDeserializedClass = JsonConvert.DeserializeObject<GV.Root>(File.ReadAllText(
    currentAssemblyPath + String.Format(@"\Resources\{0}", "dataForLinks.json")
));

但我还没有找到任何可以让我对 class 中的对象进行一次更新而无需执行 New 语句将其清除的搜索。

我想做的是类似下面的事情:

-Load the json into my class object [Done]
-Save a value thats in my class object [stuck here]
   GV.pathToNESContent = "new value here";
-Save class object (with the one new value) back to the file for which it came from preserving the other original values. [not here yet]

当我只更新一个 class 对象时,我想包含我从文件中读入的所有其他 JSON 数据的原始值。

任何人都可以分享上面的一个很好的例子吗?

更新

我会放弃内部 class 结构:

namespace GV
{
  public class Data
  {
    [JsonProperty("pathForNESPosters")]
    public string PathForNESPosters { get; set; }
    [JsonProperty("pathForSNESPosters")]
    public string PathForSNESPosters { get; set; }
    [JsonProperty("pathForSEGAPosters")]
    public string PathForSEGAPosters { get; set; }
    [JsonProperty("pathToNESContent")]
    public string PathToNESContent { get; set; }
    [JsonProperty("pathToSNESContent")]
    public string PathToSNESContent { get; set; }
    [JsonProperty("pathToSEGAContent")]
    public string PathToSEGAContent { get; set; }
    [JsonProperty("lastSavedVolume")]
    public double LastSavedVolume { get; set; }
  }

  public class Root
  {
    public Data Data { get; set; }
  }

Deser(使用Path.Combine构建路径,而不是字符串连接):

var x = JsonConvert.DeserializeObject<GV.Root>(File.ReadAllText(
    Path.Combine(currentAssemblyPath, "Resources", "dataForLinks.json"))
));

编辑:

x.Data.PathToNESContent = "...";

并重新订购