JSON反序列化后空子数据结构

时间:2018-08-16 20:19:24

标签: c# json class deserialization

我有一个对象,该对象的属性是其他自定义对象的列表。 它实际上钻取了自定义对象属性的许多层,但我们只看一下对象的最后3个级别。

{
    "version" : {
        "version_data" : [ {
            "version_value" : "6.06"
        }, {
            "version_value" : "7.10"
        }, {
            "version_value" : "8.04"
        }, {
            "version_value" : "8.10"
        } ]
    }
}

所以我的课看起来像这样:

public class Version
{
    [Required()]
    public Version_Data version_data { get; set; }
}
public class Version_Data
{
    [MinLength(1)]
    public List<Version_Data_Item> items { get; set; }
}
public class Version_Data_Item
{
    [Required()]
    public string version_value { get; set; }
}

我能够提取一个version_data_item

{
     "version_value" : "6.06"
}

如果我反序列化该JSON,我可以调用类似deserializedObject.version_value的方法,它返回6.06

我遇到的问题是高层。例如,然后从数据中提取“ Version_Data”对象

{
    "version_data" : [ {
        "version_value" : "6.06"
    }, {
        "version_value" : "7.10"
    }, {
        "version_value" : "8.04"
    }, {
        "version_value" : "8.10"
    } ]
}

反序列化为Version_Data(至少没有引发异常),但是当我调试它时,列表为null

enter image description here

我想念什么?

3 个答案:

答案 0 :(得分:2)

您的version_data应该称为项目:

{
    "items" : [ {
        "version_value" : "6.06"
    }, {
        "version_value" : "7.10"
    }, {
        "version_value" : "8.04"
    }, {
        "version_value" : "8.10"
    } ]
}

答案 1 :(得分:0)

对于从JSON生成C#,您可以使用非常有用的网络generator

您的正确模型在这里:

public class VersionData
{
    public string version_value { get; set; }
}

public class Version
{
    public List<VersionData> version_data { get; set; }
}

public class RootObject
{
    public Version version { get; set; }
}

答案 2 :(得分:0)

您是否正在使用Newtonsoft的JSON?该结构看起来不正确。除非使用自定义解析器,否则结构应如下所示: https://app.quicktype.io?share=Olvtc5B3C1zg7hy2CJgp