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

标签 c# json json.net deserialization

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

{"response":[{"uid":174952xxxx,"first_name":"xxxx","last_name":"xxx"}]}

我正在尝试以下一种方式反序列化它 -

JsonConvert.DeserializeObject<T>(json);  

其中 T = VkUser 列表,但我得到了错误。

[JsonObject]
public class VkUser
{
    [JsonProperty("uid")]
    public string UserId { get; set; }

    [JsonProperty("first_name")]
    public string FirstName { get; set; }

    [JsonProperty("last_name")]
    public string LastName { get; set; }
}

我一直在努力

public class SomeDto // maybe Response as class name will fix it but I don't want such name
{
    public List<VkUser> Users {get;set;}
}

哪些反序列化选项可以帮助我?

最佳答案

使用SelectToken :

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);

正如 Brian Rogers 所指出的,您可以直接使用 ToObject:

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

关于c# - 如何反序列化 JSON 数组并忽略根节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953713/

相关文章:

javascript - WebGL 地球 : how to get data from db and show popup over globe when click globe spot

java - 输出html而不是json

c# - 使用 Newtonsoft 的 JSON C# 问题

c# - PDF 签名 - 使用 ItextSharp 将时间戳标记设置为签名

c# - C# 的 OPC 示例应用程序

c# - 多个左连接的 LINQ 方法语法

ios - 使用 JSONDecoder 解码古怪的日期格式

c# - Json.net 慢序列化和反序列化

c# - Json.net 从 HTTPClient 结果反序列化 DateTime

c# - .NET 中的 Windows 身份验证