如何反序列化JSON数组并忽略根节点?
我有来自服务器的下一个响应 –
{"response":[{"uid":174952xxxx,"first_name":"xxxx","last_name":"xxx"}]}
我试图以下一种方式反序化 –
JsonConvert.DeserializeObject(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 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>(users);
正如Brian Rogers所指出的,你可以直接使用ToObject
:
var vkUsers = JObject.Parse(s).SelectToken("response").ToObject>();