Десериализация динамического типа в JSON с помощью .Net - PullRequest
3 голосов
/ 01 апреля 2011

У меня есть следующий 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, не зная типов (полный рабочий день, неполный рабочий день, sub). Я пытался сделать это в классе «Счет», но это не сработало:

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

1 Ответ

1 голос
/ 29 апреля 2011

Ознакомьтесь с этим ответом, обсуждение связано с тем, что вам нужно. Ключ нового типа dynamic:

Десериализовать JSON в динамический объект C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...