将数据写入正确类别的JSON文件(C#Newtonsoft JSON)



我正试图在我的Discord Bot中制作一款游戏,它完全基于Dokkan Battle,用户创建自己的被动,命令可以根据他们输入的内容查看一些统计数据。

我想做的是获取这些数据并将其存储在JSON文件中,但按照我的布局方式,我希望它将所有数据都写在一个类别中,这样就可以更容易地搜索特定的被动词来显示

{
"userPassiveStorage": "Storage for user created passives using /passivecreator",
"members": [
{
"passiveName": "",
"leaderName": "",
"unitHP":,
"unitATK":,
"unitDEF":,
"leaderValue":,
"passiveATK":,
"passiveDEF":,
"supportBuff":,
"links": "",
}
]
}

我的方法不是以正确的格式写入JSON文件,而是将其全部存储为一行

public void StoreUserPassives(DokkanUserPassiveBuilder classObj) 
{
using (StreamWriter sw = new StreamWriter("UserPassivesStorage.json")) 
{
JsonSerializer serializer = new JsonSerializer();
List<DokkanUserPassiveBuilder> data = new List<DokkanUserPassiveBuilder>();
data.Add(classObj);
string json = JsonConvert.SerializeObject(data.ToArray(), Formatting.Indented);
serializer.Serialize(sw, json);
}
}

所以我只需要知道如何向这个类别添加另一个具有与JSON文件中相同属性的成员如果有一种更简单的方法而不是使用类别,我想知道这是否是一种更容易的方法,因为我只需要一种方法来存储每个被动信息,并且它需要易于搜索

您正在序列化两次。试试这个代码

var path = @"UserPassivesStorage.json";
var json = File.ReadAllText(path);
var jsonObj =  JObject.Parse(json);
var members =  jsonObj["members"].ToObject<List<DokkanUserPassiveBuilder>>();

members.Add(classObj);

jsonObj["members"] = JArray.FromObject(members);

File.WriteAllText(path, jsonObj.ToString());

相关内容

  • 没有找到相关文章

最新更新