Json反序列化程序似乎不起作用
本文关键字:不起作用 程序 反序列化 Json | 更新日期: 2023-09-27 18:21:27
我做了一些代码,使用json.Net将json文件反序列化为对象:
private void populate()
{
LevelsConfig RootObject = new LevelsConfig();
string json = File.ReadAllText("jsontest");
JsonConvert.PopulateObject(json, RootObject);
}
LevelsConfig看起来是这样的:
public class LevelsConfig
{
public List<DefinitionRoot> roots { get; set; }
}
下面有一堆类,每个类都代表json的"更深层次"部分,比如:
public class DefinitionRoot
{
public string LevelName { get; set; }
public int Difficulty { get; set; }
public int StartingGold { get; set; }
public int StartingLives { get; set; }
public List<UndertimePart> UndertimeParts { get; set; }
public List<Wave> Waves { get; set; }
}
public class Wave
{
public string Name { get; set; }
public double TimeBeforeStart { get; set; }
public int GoldBrave { get; set; }
public List<SubWave> SubWaves { get; set; }
}
等等
悬停时,本文顶部编写的populate函数返回一个空对象。为什么会发生这种情况?
编辑:我需要删除json文件示例,因为我不确定我应该显示它^^
您需要将JSON反序列化为一个对象,该对象的属性是名称为LevelsConfig
的LevelsConfig
的集合。
private void populate()
{
var obj = new {LevelsConfig = new List<LevelsConfig>() }
string json = File.ReadAllText("jsontest");
JsonConvert.PopulateObject(json, obj);
foreach (var config in obj.LevelsConfig)
{
// ...
}
}
您应该使用JsonConvert.DeserializeObject
,而不是JsonConvert.PopulateObject
。JsonConvert.PopulateObject
用于用JSON中的值填充现有对象实例。
string json = File.ReadAllText("jsontest");
var levelsConfig = JsonConvert.DeserializeObject<List<LevelsConfig>>(json);