繁体   English   中英

从json数组创建c#对象

[英]create c# object from json array

尝试将json数组转换为对象时收到错误。

我有一个像这样的多层Json数组:

    {  
   "error":"0",
   "result":{  
      "activities":{  
         "1":{  
            "activity_id":"15803",
            "activity_id_name":"Ashtanga vinyasa",
            "schedule":{  
               "1":{  
                  "available":"30",
                  "start":"09:00:00"
               }
            }
         },
         "2":{  
            "activity_id":"15804",
            "activity_id_name":"Yin/Yang",
            "schedule":{  
               "1":{  
                  "available":"30",
                  "start":"10:30:00"
               }
            }
         },
         "3":{  
            "activity_id":"15805",
            "activity_id_name":"Stress relief",
            "schedule":{  
               "1":{  
                  "available":"30",
                  "start":"20:00:00"
               }
            }
         }
      },
      "json_code":"2"
   },
   "id":null
}

由此我创建了一个看起来像这样的对象:

namespace LesRooster.Models
{
    public class JsonGroup
    {
        public string Error { get; set; }
        public List<Results> Result { get; set; }
        public string Id { get; set; }

    }

    public class Results
    {
        public Activities YogaActivities { get; set; }
        public int JsonCode { get; set; } 
    }

    public class Activities
    {
        public int ActivityId { get; set; }
        public string ActivityIdName { get; set; }
        public Schedule LesSchedule { get; set; }
    }

    public class Schedule
    {
        public int Available { get; set; }
        public DateTime Start { get; set; }
    }

}

当我尝试使用以下行将数组添加到对象时:

JsonGroup jgroup = JsonConvert.DeserializeObject<JsonGroup>(JsonArrayCode);

我收到以下错误:

无法将当前JSON对象(例如{“ name”:“ value”})反序列化为类型'System.Collections.Generic.List`1 [LesRooster.Models.Results]',因为该类型需要JSON数组(例如[1, 2,3])正确反序列化。

有什么办法解决这个问题? 我想将其保留为对象,因为它很容易在我的mvc5应用程序的视图中传递。

我已经尝试使用谷歌搜索,但是我发现的所有解决方案都是针对单维json数组的。

我从以下请求JSON数组的API文档如下:

json_code   integer 
Constant value: 2
activities  hash    
    {
    index : {
        activity_id: integer
        activity_id_name: string
        schedule: hash
        {
            index : {
                available: integer
                start: time
                }
            }
        }
}

您的类的结构与JSON的结构不匹配-这会导致异常。 我对您的类进行了一些更改以反映JSON结构。

主要区别在于活动不是Array而是Dictionary

namespace LesRooster.Models
{
    public class JsonGroup
    {
        public string Error { get; set; }
        public Result Result { get; set; }
        public string Id { get; set; }

    }

    public class Result {
        public IDictionary<string, Activities> Activities {get; set;}
        public int JsonCode {get; set;}
    }        

    public class Activities
    {
        [JsonProperty("activity_id")]
        public int ActivityId { get; set; }
        [JsonProperty("activity_id_name")]
        public string ActivityIdName { get; set; }
        public IDictionary<string, Schedule> Schedule { get; set; }
    }

    public class Schedule
    {
        public int Available { get; set; }
        public DateTime Start { get; set; }
    }    
}

您是否尝试过JSON.NET 它是MIT许可的BTW。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM