![](/img/trans.png)
[英]DropNetRT Dropbox JSON deserializer seems to be using the wrong sort of object?
[英]Json deserializer seems to not work
我做了一些代码,使用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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.