繁体   English   中英

杰森解串器似乎不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM