C# JSON数组响应REST API,提取数据时出错#
我试图从响应中提取,但在尝试反序列化对象时,我得到以下错误 无法将当前JSON数组(例如[1,2,3])反序列化为类型 “JSonClasses+Item”,因为该类型需要JSON对象(例如。 {\'name\':\'value\'})以正确反序列化 我的回应是:C# JSON数组响应REST API,提取数据时出错#,c#,asp.net,json,api,serialization,C#,Asp.net,Json,Api,Serialization,我试图从响应中提取,但在尝试反序列化对象时,我得到以下错误 无法将当前JSON数组(例如[1,2,3])反序列化为类型 “JSonClasses+Item”,因为该类型需要JSON对象(例如。 {\'name\':\'value\'})以正确反序列化 我的回应是: [{"Odid":45606,"UserId":22728,"FirstName":"FirstName ","MiddleName":null,"LastName":"LastName","UserName":"FirstName.
[{"Odid":45606,"UserId":22728,"FirstName":"FirstName ","MiddleName":null,"LastName":"LastName","UserName":"FirstName.LastName","ExternalEmail":"email@yahoo.com","DefinedId":"12345","UniqueIdentifier":"null","Activation":{"IsActive":true},"DisplayName":"FirstName LastName"}]
下面是我尝试反序列化此响应的方式:
public class Activation
{
public bool IsActive { get; set; }
}
public class Item
{
public int OrgId { get; set; }
public int UserId { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string ExternalEmail { get; set; }
public string OrgDefinedId { get; set; }
public string UniqueIdentifier { get; set; }
public Activation Activation { get; set; }
public string DisplayName { get; set; }
}
var responceID= JsonConvert.DeserializeObject<JSonClasses.Item>(response.Content);
我做错了什么 如错误所述,反序列化程序无法将数组反序列化到需要对象的类中。JSON响应实际上是一个包含一个对象的数组,因此必须进行反序列化 您需要将响应反序列化为数组或
jsonclass.Item
列表,而不是单个,例如:
List items=JsonConvert.DeserializeObject(response.Content);
另外需要注意的是,您发布的响应正文中的“Odid”
与Item类中的OrgId
之间存在不匹配,这可能会导致反序列化仍然失败
dynamic response2 = JsonConvert.DeserializeObject(response.Content);