无法找到正确的JSON类

时间:2013-09-16 10:38:24

标签: c# windows-8 json.net deserialization

我有下一个JSON:

[
{
  "ApplicationRelations":[
     {
        "Application":null,
        "ApplicationSubcategory":null,
        "ApplicationCategory":{
           "categoryName":"Default Category",
           "id":4
        },
        "roleOrder":null,
        "categoryOrder":null,
        "subcategoryOrder":null,
        "applicationOrder":null,
        "id":6
     },
     {
        "Application":{
           "launchUrl":"link",
           "trainingUrl":"link",
           "installUrl":"link",
           "vpn":true,
           "overview":"text",
           "summary":"text",
           "id":12,
           "title":"Application"
        },
        "ApplicationSubcategory":{
           "subcategoryName":"Creation",
           "id":9
        },
        "ApplicationCategory":{
           "categoryName":"Default Category",
           "id":4
        },
        "roleOrder":15,
        "categoryOrder":25,
        "subcategoryOrder":35,
        "applicationOrder":45,
        "id":15
     }
  ],
  "roleName":"Role 02",
  "roleHeader":"Header of Role 02",
  "AnnouncementRelations":[

  ],
  "id":2
}
]

这是我的C#clases:

public class Applications
    {
        public List<SalesCentralApplicationRelation> salesCentralApplicationRelations { get; set; }
        public string RoleName { get; set; }
        public string RoleHeader { get; set; }
        public List<object> SalesCentralAnnouncementRelations { get; set; }
        public int Id { get; set; }
    }
    public class SalesCentralApplicationRelation
    {
        public SalesCentralApplication salesCentralApplication { get; set; }
        public SalesCentralApplicationSubcategory salesCentralApplicationSubcategory { get; set; }
        public SalesCentralApplicationCategory salesCentralApplicationCategory { get; set; }
        public int roleOrder { get; set; }
        public int categoryOrder { get; set; }
        public int subcategoryOrder { get; set; }
        public int applicationOrder { get; set; }
        public int id { get; set; }
    }
    public class SalesCentralApplicationCategory
    {
        public string categoryName { get; set; }
        public int id { get; set; }
    }
    public class SalesCentralApplicationSubcategory
    {
        public string subcategoryName { get; set; }
        public int id { get; set; }
    }
    public class SalesCentralApplication
    {
        public string launchUrl { get; set; }
        public string trainingUrl { get; set; }
        public string installUrl { get; set; }
        public bool vpn { get; set; }
        public string overview { get; set; }
        public string summary { get; set; }
        public int id { get; set; }
        public string title { get; set; }
    }

我的反序列化:

var contents //JSON string above
Applications ApplicationsList = JsonConvert.DeserializeObject<Applications>(contents) as Applications;

代码失败了:

无法将当前JSON数组(例如[1,2,3])反序列化为类型“App1.MainPage + Applications”,因为该类型需要JSON对象(例如{“name”:“value”})才能正确反序列化

要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList)可以从JSON数组反序列化的列表。 JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。

路径'',第1行,第1位。

用json2csharp检查我的课程 - 一切都很好......问题出在哪里?

1 个答案:

答案 0 :(得分:3)

你的json是一个数组,而不是一个对象。试试这个:

var ApplicationsList = JsonConvert.DeserializeObject<List<Applications>>(contents);