如何使用多个子数组动态解析、读取和附加到 JSON
How do you dynamically parse, read, and append to JSON with multiple sub arrays
经过大量研究后,我未能找到读取 json 文件、存储它们的值,然后向其附加新的 object/array 的任何好方法。
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; }
。问题是大多数示例都使用 JSON看起来像 {"user":[{"id":1,"logins":0}]}
的文件只有很少的数组和子数组。
任何愿意回答的人,请不要给我代码,请解释如何完成(我是否需要创建自己的解析器等),或者如果已经有任何 posts/links 回答了我的问题(尽管我没找到如何回答)。
备注-
- “000001”和“000002”将是动态的,因此每次启动程序时这些值都会不同。我只想在保存的最后一个统计实例之后追加。
另外抱歉,我仍在学习 C#,但知道大部分基础知识和一些更复杂的概念,我只是一直不擅长存储数据和使用 JSON。如果您需要任何帮助,请添加评论,我会添加。
请参阅Json.NET的Modifying JSON。
This sample loads JSON, modifies JObject and JArray instances and then writes the JSON back out again.
Sample
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"
// ]
// }
// }
经过大量研究后,我未能找到读取 json 文件、存储它们的值,然后向其附加新的 object/array 的任何好方法。 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; }
。问题是大多数示例都使用 JSON看起来像 {"user":[{"id":1,"logins":0}]}
的文件只有很少的数组和子数组。
任何愿意回答的人,请不要给我代码,请解释如何完成(我是否需要创建自己的解析器等),或者如果已经有任何 posts/links 回答了我的问题(尽管我没找到如何回答)。
备注-
- “000001”和“000002”将是动态的,因此每次启动程序时这些值都会不同。我只想在保存的最后一个统计实例之后追加。
另外抱歉,我仍在学习 C#,但知道大部分基础知识和一些更复杂的概念,我只是一直不擅长存储数据和使用 JSON。如果您需要任何帮助,请添加评论,我会添加。
请参阅Json.NET的Modifying JSON。
This sample loads JSON, modifies JObject and JArray instances and then writes the JSON back out again.
Sample
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" // ] // } // }