응답에서 추출하려고하는데 DeserializeObject를 시도 할 때 다음 오류가 발생합니다.
올바른 역 직렬화를 위해 JSON 개체 (예 : {\ "name \": \ "value \"})가 필요하기 때문에 현재 JSON 배열 (예 : [1,2,3])을 'JSonClasses + Item'유형으로 역 직렬화 할 수 없습니다.
내 답변은 다음과 같습니다.
[{"Odid":45606,"UserId":22728,"FirstName":"FirstName ","MiddleName":null,"LastName":"LastName","UserName":"FirstName.LastName","ExternalEmail":"[email protected]","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 response2 = JsonConvert.DeserializeObject(response.Content);
내가 도대체 뭘 잘못하고있는 겁니까?
오류에서 알 수 있듯이 deserializer 는 object 를 필요로하는 클래스로 배열 을 deserialize 할 수 없습니다 . JSON 응답은 실제로 한 개체의 배열이며 이와 같이 역 직렬화되어야합니다.
응답을 JsonClasses.Item
단일 대신 배열 또는 목록으로 역 직렬화해야합니다 . 예 :
List<JSonClasses.Item> items = JsonConvert.DeserializeObject<List<JSonClasses.Item>>(response.Content);
추가로 "Odid"
게시 된 응답 본문과 OrgId
Item 클래스 간에 불일치가있어 역 직렬화가 여전히 실패 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다