【问题标题】:Deserializing a dynamic type in JSON with .Net使用 .Net 反序列化 JSON 中的动态类型
【发布时间】:2011-07-27 07:47:42
【问题描述】:

我有以下 JSON:

\"success\":true,
   \"requestSecs\":0.084988117218,
   \"body\":{
      \"countsByStatus\":[
         {
            \"status\":\"yes\",
            \"counts\":{
               \"byType\":{
                  \"fulltime\":0,
                  \"parttime\":0,
                  \"sub\":0,
               },
               \"total\":0
            }
         }

我正在使用以下类将其反序列化为 .net:

[DataContract]
    public class ResponseAttendanceList
    {
        [DataMember(Name = "success")]
        public string Success;

        [DataMember(Name = "requestSecs")]
        public string RequestSecs;

        [DataMember(Name = "body")]
        public AttendanceList AttendanceList;
    }

[DataContract]
    public class AttendanceList
    {
        [DataMember(Name = "countsByStatus")]
        public List<Status> countsByStatus;        
    }

[DataContract]
    public class Status
    {
        [DataMember(Name = "status")]
        public string status;

        [DataMember(Name = "counts")]
        public Counts counts;
    }

[DataContract]
    public class Counts
    {
        [DataMember(Name = "byType")]
        public ByType byType;

    }

[DataContract]
    public class ByType
    {
        [DataMember(Name = "fulltime")]
        public int fulltime;

        [DataMember(Name = "parttime")]
        public int parttime;

        [DataMember(Name = "sub")]
        public int sub;
    }

问题是,反序列化到 ByType 类中的类型实际上是动态的,所以可以改变。如何在不知道类型(全职、兼职、子)的情况下反序列化此 JSON。我尝试在“计数”类上这样做,但没有奏效:

    [DataContract]
    public class Counts
    {        
        [DataMember(Name = "byType")]
        public KeyValuePair<string, int> byType;     
    }

【问题讨论】:

标签: .net json dynamic


【解决方案1】:

查看此答案,链接到的讨论符合您的需要。关键是新的dynamic 类型:

Deserialize JSON into C# dynamic object?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多