我使用 RestSharp 和动态地将不同的 JSON 结构转换为各种 C# 结构IRestResponse<T> response = client.Execute<T>(request)
。但是,一个特定的 JSON 结果给我带来了麻烦,它以方括号开头和结尾......
我的 JSON 以“[”和“]”字符开头和结尾:
[
{
"first": "Adam",
"last": "Buzzo"
},
{
"first": "Jeffrey",
"last": "Mosier"
}
]
我创建了这个类结构:
public class Person
{
public string first { get; set; }
public string last { get; set; }
}
public class Persons
{
public List<Person> person { get; set; }
}
我在方法中使用 RestSharp 动态反序列化到我的Persons类型 T...
IRestResponse<T> response = client.Execute<T>(request);
return response;
问题是当T是Persons我在客户端上收到此错误。执行行:
无法将“RestSharp.JsonArray”类型的对象转换为“System.Collections.Generic.IDictionary`2[System.String,System.Object]”类型。
我也尝试使用 Json.Net 并收到此错误:
无法将当前 JSON 数组(例如 [1,2,3])反序列化为“Persons”类型,因为该类型需要 JSON 对象(例如 {\"name\":\"value\"})才能正确反序列化。
鉴于最初的“[”字符,我尝试反序列化为List of Persons。这停止了错误消息,我有正确数量的“人”记录,但它们都是空的。 (我确认名称的大小写是相同的。)当目标服务器中的数组始终只有一个元素时,我也不想使用 List 集合,因此绑定到“Persons”比“List”更有意义。
将此 JSON 反序列化为的正确方法是什么Persons并且还在我的动态范围之内IRestResponse<T> response = client.Execute<T>(request)
方法?