Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON数组响应REST API,提取数据时出错#_C#_Asp.net_Json_Api_Serialization - Fatal编程技术网

C# JSON数组响应REST API,提取数据时出错#

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.

我试图从响应中提取,但在尝试反序列化对象时,我得到以下错误

无法将当前JSON数组(例如[1,2,3])反序列化为类型 “JSonClasses+Item”,因为该类型需要JSON对象(例如。 {\'name\':\'value\'})以正确反序列化

我的回应是:

[{"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);