簡體   English   中英

JSON 數組響應 REST API,提取數據時出錯 Z240AA2CEC4B29C56F3BEE520ADCEE8

[英]JSON Array response REST API, Error extracting data c#

我正在嘗試從響應中提取信息,但是在嘗試 DeserializeObject 時出現以下錯誤。

Cannot deserialize the current JSON array (eg [1,2,3]) into type 'JSonClasses+Item' because the type requires a JSON object (eg {\"name\":\"value\"}) to deserialize correctly.

我的回應是:

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

我還嘗試使用以下方法將其轉換為動態 object,然后嘗試將數據提取到項目 class 但發生相同的錯誤:

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

我究竟做錯了什么?

正如錯誤所說,反序列化器無法將數組反序列化為需要 object 的class 您的 JSON 響應實際上是一個包含一個 object 的數組,因此必須反序列化。

您需要將響應反序列化為JsonClasses.Item的數組或列表,而不是單個,例如:

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

作為附加說明,您發布的響應正文中的"Odid"與您的項目OrgId中的 OrgId 不匹配,這可能會導致您的反序列化仍然失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM