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

我正在尝试从响应中提取内容,但是在尝试DeserializeObject时出现以下错误。

  

无法将当前JSON数组(例如[1,2,3])反序列化为type   '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"}]

这是我尝试DeserializeObject的方式:

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

我还尝试使用以下方法将其转换为Dynamic对象,然后尝试将数据提取到Item类中,但是会发生相同的错误:

dynamic response2 = JsonConvert.DeserializeObject(response.Content); 

我在做什么错?

flylin036 回答:JSON数组响应REST API,提取数据时出错c#

如错误所示,反序列化程序无法将 array 反序列化为需要 object 的类。您的JSON响应实际上是一个对象的数组,因此必须反序列化。

您需要将响应反序列化为JsonClasses.Item的数组或列表,而不是单个数组,例如:

List<JSonClasses.Item> items = JsonConvert.DeserializeObject<List<JSonClasses.Item>>(response.Content);

请注意,发布的响应正文中的"Odid"与Item类中的OrgId之间不匹配,这可能导致反序列化仍然失败。

本文链接:https://www.f2er.com/3148808.html

大家都在问