這是類數據庫:JSON對象顯示爲空。爲什麼?
namespace vVvBot.Model
{
public class Database
{
public List<CustomCommand> CustomCommands { get; set; }
public List<CustomEvent> CustomEvents { get; set; }
}
}
這是自定義事件類:
namespace vVvBot.Model
{
public class CustomEvent
{
public string Name { get; set; }
public bool Enabled { get; set; }
public List<CustomCommand> Commands { get; set; }
}
}
這是類CustomCommand:
namespace vVvBot.Model
{
public class CustomCommand
{
public string Keyword { get; set; }
public CommandType Type { get; set; }
public string Message { get; set; }
public bool Enabled { get; set; }
}
}
這是我反序列化類序列化數據庫對象
namespace vVvBot.Data
{
public class FileJsonContext
{
public Database ReadToObject(string fileName)
{
dynamic jsonData = File.ReadAllText(fileName);
return JsonConvert.DeserializeObject<Database>(jsonData) ?? new Database();
}
public void ObjectToFile(string fileName, Database database)
{
dynamic jsonData = JsonConvert.SerializeObject(database, Formatting.Indented);
File.WriteAllText(fileName, jsonData);
}
}
}
在有問題的文件,這就是我實例數據庫:
private Database _database;
public Database Database => _database ?? (_database = JsonContext.ReadToObject("Commands.txt"));
這個問題行是:
var messageindex = Database.CustomEvents[index].Commands.FindLastIndex(x => x.Type == CommandType.Welcome);
它試圖完成線,但立即返回,因爲它涉及返回null。在應該調用customcommand列表的自定義事件中有一個List,以便我可以訪問該對象。不知道它爲什麼回到NULL。
JSON文件包括:
{
"CustomCommands": [
{
"Keyword": "Hello",
"Type": 0,
"Message": "World",
"Enabled": true
},
{
"Keyword": "Test",
"Type": 0,
"Message": "test",
"Enabled": true
},
{
"Keyword": "greeting",
"Type": 3,
"Message": "this isnt a test ",
"Enabled": true
},
{
"Keyword": "leaving",
"Type": 4,
"Message": "Sorry to see you go ",
"Enabled": true
},
{
"Keyword": "faq",
"Type": 1,
"Message": "This is a FAQ TEST ",
"Enabled": true
},
{
"Keyword": "Hi",
"Type": 0,
"Message": "Hilo ",
"Enabled": false
},
{
"Keyword": "Hi",
"Type": 0,
"Message": "Hilo ",
"Enabled": false
}
],
"CustomEvents": [
{
"Name": "greeting",
"Enabled": true
},
{
"Name": "leaving",
"Enabled": true
}
]
}
在您共享的JSON字符串中,「CustomEvents」的項目沒有設置屬性「Commands」。所以當你反序列化時,沒有任何自定義事件會有命令。它將是空列表,所以當你查詢空列表時,你總是會得到NULL。 –
它不是從CustomCommands中提取所有項目嗎?當在CustomEvents類中調用它時@ChetanRanpariya 我想要使用CustomCommands中的Already的值 –
它不會那樣工作.... JSON反序列化不會基於其他屬性初始化屬性。它是基於JSON字符串中的值。這裏'Database'對象將具有帶有值的'CustomCommands'和'CustomEvents'屬性,但'CustomEvents'的項目在'CustomCommands'屬性中不具有值。 –