가 나는 구글 API에서 JSON 응답을 역 직렬화하기 위해 노력하고, 그래서 나는 그것으로 도움이되는 몇 가지 클래스를 정의하는 것이라고 생각 :KnownType 속성을 잘못 사용하는 이유는 무엇입니까?
[DataContract]
public class DetectionResult:ResponseData
{
[DataMember(Name="language")]
public string Language
{ get; set; }
[DataMember(Name="isReliable")]
public bool IsReliable
{ get; set; }
[DataMember(Name="confidence")]
public double Confidence
{get;set;}
}
[DataContract]
public abstract class ResponseData
{
[DataMember(Name = "error")]
public TranslationError Error
{ get; set; }
}
[DataContract]
public class TranslationError
{
[DataMember(Name="code")]
public int Code
{ get; set; }
[DataMember(Name="message")]
public int Message
{ get; set; }
}
[DataContract]
[KnownType(typeof(DetectionResult))]
public class RequestResult
{
[DataMember(Name="responseStatus")]
public int ResponseStatus
{ get; set; }
[DataMember(Name="responseDetails")]
public string ResponseDetails
{ get; set; }
[DataMember(Name = "responseData")]
public ResponseData Response
{ get; set; }
}
내가 요청을 한 후 얻을 응답은 다음과 같습니다
{"responseData": {"language":"en","isReliable":false,"confidence":0.114892714}, "responseDetails": null, "responseStatus": 200}
하고 역 직렬화하는이 코드를 사용 :
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(RequestResult));
RequestResult result = (RequestResult)serializer.ReadObject(stream);
stream.Close();
}
을 그러나 "는 추상 클래스를 만들 수 없습니다"라는 예외를 얻고있다. 그것은 DetectionResult 클래스에 대해 알고 그것을 제대로 deserialize 할 수 있습니까?
굉장 링크! 그것을 찾아 주셔서 대단히 감사합니다. –