[英]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.