3
나는 (내가 통제하지 않고 변경할 수 없습니다) 다음과 같은 두 가지 목적이 있습니다 내가 JSON에서이 데이터를 검색하는 GET 호출을 만들기 위해 위해 RESTClient를 사용하고json 직렬화가 실패하는 이유는 무엇입니까?
[Serializable]
[DataContract]
public class AddressContactType : BaseModel
{
public AddressContactType();
[DataMember]
public string AddressContactTypeName { get; set; }
}
[Serializable]
[DataContract]
public abstract class BaseModel
{
protected BaseModel();
[DataMember]
public int Id { get; set; }
[DataMember]
public string NativePMSID { get; set; }
[DataMember]
public string PMCID { get; set; }
}
합니다. 요청이 성공합니다. 반환 된 JSON은 다음과 같습니다.
[{"Id":0,"NativePMSID":"1","PMCID":"1020","AddressContactTypeName":"Home"},{"Id":0,"NativePMSID":"2","PMCID":"1020","AddressContactTypeName":"Apartment"},{"Id":0,"NativePMSID":"3","PMCID":"1020","AddressContactTypeName":"Vacation"},{"Id":0,"NativePMSID":"3","PMCID":"1020","AddressContactTypeName":"Other"}]
그 시점부터 세 가지 다른 방식으로 데이터를 비 직렬화하려고했습니다.
내 코드 : " 'System.Collections.Generic.IDictionary`2를 [입력 할 유형'RestSharp.JsonArray '의 개체를 캐스팅 할 수 없습니다 : 시도 1에서var request = new RestRequest("AddressContactType", Method.GET);
request.AddHeader("Accept", "application/json");
request.AddParameter("PMCID", "1020");
#region JSON Deserialization
// ---- Attempt #1
var response = client.Execute<AddressContactType>(request);
// ---- Attempt #2
var myResults = response.Content;
var ms = new MemoryStream(Encoding.UTF8.GetBytes(myResults));
var ser = new DataContractJsonSerializer(typeof(AddressContactType));
var result = (AddressContactType)ser.ReadObject(ms);
// ---- Attempt #3
var jsonSettings = new JsonSerializerSettings()
{
Formatting = Formatting.Indented,
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
PreserveReferencesHandling = PreserveReferencesHandling.Objects
};
var result2 = new AddressContactType();
result2 = JsonConvert.DeserializeObject<AddressContactType>(new StreamReader(ms).ReadToEnd(), jsonSettings);
#endregion
에서, 위해 RESTClient 시도가 오류를 반환 System.String, System.Object] '. "
시도 2에서 개체 결과는 올바른 속성 (Id, NativePMSID, PMCID 및 AddressContactTypeName)으로 표시되지만 모두 null이며 각 인스턴스가 하나만 표시됩니다.
시도 3은 result2에 대해 null 값을 반환합니다.
제안 사항?
감사합니다.
고마워요! 왜 그것이 효과가 있는지 설명해 주시겠습니까? – OriBr