C# 如何反序列化JSON数组并忽略根节点?

C# 如何反序列化JSON数组并忽略根节点?,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,我有来自服务器的下一个响应- {"response":[{"uid":174952xxxx,"first_name":"xxxx","last_name":"xxx"}]} 我正试图用下一种方式反序列化这个- JsonConvert.DeserializeObject<T>(json); 我一直在尝试 public class SomeDto // maybe Response as class name will fix it but I don't want such n

我有来自服务器的下一个响应-

{"response":[{"uid":174952xxxx,"first_name":"xxxx","last_name":"xxx"}]}
我正试图用下一种方式反序列化这个-

JsonConvert.DeserializeObject<T>(json);  
我一直在尝试

public class SomeDto // maybe Response as class name will fix it but I don't want such name
{
    public List<VkUser> Users {get;set;}
}
public class SomeDto//可能作为类名响应将修复它,但我不想要这样的名称
{
公共列表用户{get;set;}
}
哪些反序列化选项可以帮助我?

使用:


无法将当前JSON对象(例如{“name”:“value”})反序列化为类型“System.Collections.Generic.List`1[Oauth.Vk.Dto.VkUserApi.VkUser]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。若要修复此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为可以从JSON对象反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。与其将所选标记转换回字符串,然后重新解析它,不如使用
ToObject()
将所选标记直接转换为最终结果。您的回答会生成错误。若您的数据只包含一个结果,那个么它将生成错误,因为它不是对象的数组,而是单个对象
public class SomeDto // maybe Response as class name will fix it but I don't want such name
{
    public List<VkUser> Users {get;set;}
}
string s =  "{\"response\":[{\"uid\":174952,\"first_name\":\"xxxx\",\"last_name\":\"xxx\"}]}";

var users = JObject.Parse(s).SelectToken("response").ToString();

var vkUsers = JsonConvert.DeserializeObject<List<VkUser>>(users);
var vkUsers = JObject.Parse(s).SelectToken("response").ToObject<List<VkUser>>();