我正试图在我的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());