您如何动态解析,读取和追加具有多个子数组的JSON

问题描述 投票:-2回答:1

经过大量研究,我一直无法找到任何好的方法来读取json文件,存储其值,然后向其添加新的对象/数组。JSON看起来像

    {
"Skywars": [
  {
    "Solo Normal": [
      {
        "000001": [
          {
            "Kills": 213,
            "Deaths": 117
          }
        ]
      }
    ],
    "Solo Insane": [
      {
        "000001": [
          {
            "Kills": 10790,
            "Deaths": 7184
          }
        ]
      }
    ]
  }
],"Bedwars": [
  {
    "Solo": [
      {
        "000001": [
          {
            "Kills": 0,
            "Deaths": 0
          }
        ]
      }
    ],
    "Duos": [
      {
        "000001": [
          {
            "Kills": 0,
            "Deaths": 0
          }
        ]
      }
    ]
  }
]
}

例如,我打算将其改成“ Skywars.Solo Normal”,“ Skywars.Solo Insane”,“ Bedwars.Solo”,“ Bedwars.Duos”,然后在“ 000002”后面附加新的杀死和死亡值。由于某些原因,即使经过数小时的搜索,我仍然找不到如何读取杀戮和死亡的信息(我已经很接近了,使用public Skywars[] Skywars { get;set; }。问题是大多数示例都使用了看起来像{"user":[{"id":1,"logins":0}]}的JSON文件],只有很少的数组和子数组。

对于任何愿意回答的人,请不要给我代码,不要解释代码的完成方式(我是否需要创建自己的解析器等),或者是否已有任何帖子/链接可以回答我的问题问题(即使我找不到方法)。

注释-

  • “ 000001”和“ 000002”将是动态的,因此,每次启动程序时,这些值都将不同。我只想在保存的统计信息的最后一个实例之后追加。

[也很抱歉,我仍在学习C#,但了解大多数基础知识和一些更复杂的概念,但我从来都不擅长存储数据和使用JSON。如果您需要其他帮助,只需添加评论,我会添加。

c# json parsing dynamic dynamically-generated
1个回答
0
投票

请参阅Json.NET的Modifying JSON

此示例加载JSON,修改JObject和JArray实例,然后再次写回JSON。

样本

string json = @"{
 'channel': {
   'title': 'Star Wars',
   'link': 'http://www.starwars.com',
   'description': 'Star Wars blog.',
   'obsolete': 'Obsolete value',
   'item': []
 }
}";

JObject rss = JObject.Parse(json);

JObject channel = (JObject)rss["channel"];

channel["title"] = ((string)channel["title"]).ToUpper();
channel["description"] = ((string)channel["description"]).ToUpper();

channel.Property("obsolete").Remove();

channel.Property("description").AddAfterSelf(new JProperty("new", "New value"));

JArray item = (JArray)channel["item"];
item.Add("Item 1");
item.Add("Item 2");

Console.WriteLine(rss.ToString());
// {
//   "channel": {
//     "title": "STAR WARS",
//     "link": "http://www.starwars.com",
//     "description": "STAR WARS BLOG.",
//     "new": "New value",
//     "item": [
//       "Item 1",
//       "Item 2"
//     ]
//   }
// }
© www.soinside.com 2019 - 2024. All rights reserved.