我正在尝试反序列化从Web API接收到的JSON字符串
try
{
string r = await App.client.GetUser();
App.Authentication = JsonConvert.DeserializeObject<ApiResult>(r);
await DisplayAlert("TEST", App.Authentication.ToString(), "OK");
Application.Current.MainPage = new Schedule();
}
catch (Exception p)
{
await DisplayAlert("Getting Authentication failed", p.ToString(), "TEST");
}
但是,它给出错误:无法将System.String强制转换或转换为App1.ApiResult
App.Authentication = JsonConvert.DeserializeObject<ApiResult>(r);
App.Authentication:
public static ApiResult Authentication = new ApiResult();`
JSON字串:
ApiResult类别:
public class ApiResult
{
public string status { get; set; }
public Account message { get; set; }
}
帐户类别:
public class Account
{
public string status { get; set; }
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public DateTime CreationDate { get; set; }
public int RoleID { get; set; }
public int doorCode { get; set; }
}
完整的错误消息:
最佳答案
看来您收到的json已被序列化两次-首先从ApiResult
到string
,然后再次到string
:
"\"{\\"status\\":\\"0\\",\\"message\\":...
调试器可能会添加第一个双引号,但是第二个双引号(转义的
\"
一个)实际上似乎是您正在处理的数据的一部分。该错误消息也这样有意义,它会反序列化string
,然后尝试将其转换为ApiResult
。尝试将数据反序列化为字符串,然后将其结果反序列化为
ApiResult
,以确保是这种情况-如果是这样,则需要更改服务器代码。