I have the following code for getting a response from my server. I can deserialize the response to my ApiResponse object type, but I can't cast an inner object to it's real type.
Here is where I am getting the response from the server:
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
GlobalTestVariables.Response = JsonConvert.DeserializeObject<ApiResponse>(result);
var a = GlobalTestVariables.Response.Result as TokenModel; // a = null
}
The value of var result = streamReader.ReadToEnd();
is as follows:
var result = "{\"IsSuccess\":true,\"Message\":\"Login Successful\",\"Result\":{\"id_token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6InBsaW10ZXN0aW5nIiwibmJmIjoxNTE1MDc5NzMyLCJleHAiOjE1MTUwODA5MzIsImlhdCI6MTUxNTA3OTczMn0.wcr5zndSwdrDL7huea_oWpAl8ohL0GL3NZOmc_VBduc\"},\"Status\":200}"
This is what's being returned:
return new ApiResponse(true, HttpStatusCode.OK, "Login Successful", new TokenModel(JwtManager.GenerateToken(user.Username)));
Where ApiResponse is:
[DataContract]
public class ApiResponse
{
[DataMember]
public bool IsSuccess { get; set; }
[DataMember]
public String Message { get; set; }
[DataMember(EmitDefaultValue = false)]
public Object Result { get; set; }
[DataMember]
public int Status { get; set; }
public ApiResponse() { }
public ApiResponse(bool isSuccess, HttpStatusCode statusCode, string message = null, object result = null)
{
IsSuccess = isSuccess;
Status = (int)statusCode;
Result = result;
Message = message;
}
}
And TokenModel is:
public class TokenModel
{
public string id_token { get; set; }
public TokenModel(string token)
{
this.id_token = token;
}
public TokenModel() { }
}
Does anybody know how to deserialize it to it's correct type?