我有一个对象,该对象的属性是其他自定义对象的列表。 它实际上钻取了自定义对象属性的许多层,但我们只看一下对象的最后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
。
我想念什么?
答案 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