Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将JSON对象反序列化为类型';System.Collections.Generic.List';_C#_Json_Windows Phone 7_Json.net - Fatal编程技术网

C# 无法将JSON对象反序列化为类型';System.Collections.Generic.List';

C# 无法将JSON对象反序列化为类型';System.Collections.Generic.List';,c#,json,windows-phone-7,json.net,C#,Json,Windows Phone 7,Json.net,我正在尝试使用json.net反序列化从web上提取的json字符串,但遇到无法反序列化json对象错误。下面是json字符串 { “元数据”:{ “页码”:1, “每页”:23, “计数”:23 }, “结果”:[ { “id”:9, “name”:“Breaks”, “slug”:“breaks”, “亚体裁”:[] }, { “id”:10, “姓名”:“冷静下来”, “鼻涕虫”:“冷静下来”, “亚体裁”:[] }, { “id”:12, “名称”:“深屋”, “鼻涕虫”:“深屋”,

我正在尝试使用json.net反序列化从web上提取的json字符串,但遇到无法反序列化json对象错误。下面是json字符串


{
“元数据”:{
“页码”:1,
“每页”:23,
“计数”:23
},
“结果”:[
{
“id”:9,
“name”:“Breaks”,
“slug”:“breaks”,
“亚体裁”:[]
},
{
“id”:10,
“姓名”:“冷静下来”,
“鼻涕虫”:“冷静下来”,
“亚体裁”:[]
},
{
“id”:12,
“名称”:“深屋”,
“鼻涕虫”:“深屋”,
“亚体裁”:[]
},
{
“id”:16,
“名称”:“DJ工具”,
“slug”:“dj工具”,
“亚体裁”:[]
},
{
“id”:1,
“名称”:“鼓与低音”,
“鼻涕虫”:“鼓和低音”,
“亚体裁”:[]
},
{
“id”:18,
“名称”:“Dubstep”,
“slug”:“dubstep”,
“亚体裁”:[]
},
{
“id”:17,
“名称”:“电气之家”,
“鼻涕虫”:“电子屋”,
“亚体裁”:[]
},
{
“id”:3,
“名称”:“Electronica”,
“slug”:“electronica”,
“亚体裁”:[]
},
{
“id”:40,
“名称”:“Funk/R&B”,
“slug”:“funk-r-and-b”,
“亚体裁”:[]
},
{
“id”:49,
“名称”:“故障跳跃”,
“slug”:“小故障跳跃”,
“亚体裁”:[]
},
{
“id”:8,
“名字”:“硬舞”,
“鼻涕虫”:“硬舞”,
“亚体裁”:[]
},
{
“id”:2,
“名称”:“核心/核心技术”,
“slug”:“硬核技术”,
“亚体裁”:[]
},
{
“id”:38,
“名字”:“嘻哈”,
“鼻涕虫”:“嘻哈”,
“亚体裁”:[]
},
{
“id”:5,
“姓名”:“房子”,
“鼻涕虫”:“房子”,
“亚体裁”:[]
},
{
“id”:37,
“名称”:“独立舞蹈/如新迪斯科”,
“鼻涕虫”:“独立舞蹈舞厅”,
“亚体裁”:[]
},
{
“id”:14,
“名称”:“最小值”,
“slug”:“最小值”,
“亚体裁”:[]
},
{
“id”:39,
“姓名”:“流行乐/摇滚乐”,
“鼻涕虫”:“流行摇滚”,
“亚体裁”:[]
},
{
“id”:15,
“名称”:“进步之家”,
“鼻涕虫”:“进步之家”,
“亚体裁”:[]
},
{
“id”:13,
“姓名”:“精神恍惚”,
“鼻涕虫”:“精神恍惚”,
“亚体裁”:[]
},
{
“id”:41,
“名称”:“雷鬼音乐/配音”,
“鼻涕虫”:“雷鬼配音”,
“亚体裁”:[]
},
{
“id”:11,
“名称”:“技术之家”,
“鼻涕虫”:“科技屋”,
“亚体裁”:[]
},
{
“id”:6,
“名称”:“技术”,
“slug”:“techno”,
“亚体裁”:[]
},
{
“id”:7,
“姓名”:“恍惚状态”,
“鼻涕虫”:“恍惚”,
“亚体裁”:[]
}
]
}

还有我的课

    public class Genres
    {
        public Metadata metadata { get; set; }
        public List<Result> results { get; set; }
    }

    public class Metadata
    {
        public int page {get; set; }
        public int perPage { get; set;}
        public int count { get; set; }
    }

    public class Result
    {
        public int id { get; set; }
        public string name { get; set; }
        public string slug { get; set; }
        public List<object> subgenres { get; set; }
    }
公共类体裁
{
公共元数据{get;set;}
公共列表结果{get;set;}
}
公共类元数据
{
公共整型页{get;set;}
公共整型每页{get;set;}
公共整数计数{get;set;}
}
公开课成绩
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共字符串slug{get;set;}
公共列表子类型{get;set;}
}
我的代码使用json.net反序列化数据

 void beatportTest_GetDataCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            List<Result> data = JsonConvert.DeserializeObject<List<Result>>(e.Result);

            //foreach loop to display data
void beatportTest\u GetDataCompleted(对象发送方,下载StringCompletedEventArgs e)
{
尝试
{
列表数据=JsonConvert.DeserializeObject(如Result);
//foreach循环显示数据

我希望能够显示Results类中每个流派的名称,但当我的应用程序编译时会出现错误。

您的JSON数据有两个主要元素元数据和结果。并且根据您的类结构,流派类也有相同的结构。但是在您的代码中,您试图反序列化该结构对于结果,这就是您出现错误的原因。
您应该尝试反序列化到类型类。
新代码如下

void beatportTest_GetDataCompleted(object sender, DownloadStringCompletedEventArgs e)
{
   try
   {
      Genres data = JsonConvert.DeserializeObject(e.Result);
      // for-each loop to display data
   }
   catch(Exception ex)
   {
   }
}

void beatportTest_GetDataCompleted(对象发送方,下载StringCompletedEventArgs e)
{
尝试
{
类型数据=JsonConvert.DeserializeObject(如Result);
//为每个循环显示数据
}
捕获(例外情况除外)
{
}
}

你从编译器中得到了什么错误?1.你得到的是运行时错误还是编译错误?如果是编译错误,错误是什么。2.如果你的输入json字符串的格式更好一些就好了,你知道换行符之类的东西,所以可读性更好。3.为什么你的json以元数据对象开始,它有结果列表,但在你的您试图直接从结果列表开始的代码?我想您可能希望反序列化元数据

void beatportTest_GetDataCompleted(object sender, DownloadStringCompletedEventArgs e)
{
   try
   {
      Genres data = JsonConvert.DeserializeObject(e.Result);
      // for-each loop to display data
   }
   catch(Exception ex)
   {
   }
}