代码之家  ›  专栏  ›  技术社区  ›  toadfromgrove

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

  •  0
  • toadfromgrove  · 技术社区  · 6 年前

    它实际上深入了自定义对象属性的许多层,但是让我们看看对象的最后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_value" : "6.06"
    }
    

    如果我反序列化JSON,我可以调用如下内容: deserializedObject.version_value

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

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

    null .

    enter image description here

    我错过了什么?

    3 回复  |  直到 6 年前
        1
  •  2
  •   Peter    6 年前

    您的版本数据应称为项:

    {
        "items" : [ {
            "version_value" : "6.06"
        }, {
            "version_value" : "7.10"
        }, {
            "version_value" : "8.04"
        }, {
            "version_value" : "8.10"
        } ]
    }
    
        2
  •  0
  •   Alexander I.    6 年前

    对于来自JSON的C代,您可以使用非常有用的web 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; }
    }