我试图反序列化从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");
}
然而,它给出了一个错误:无法强制转换或转换系统。字符串到App1。ApiResultApp。身份验证=JsonConvert。反序列化对象
应用程序。身份验证:
public static ApiResult Authentication = new ApiResult();`
JSON字符串:
"\"{\\"状态\\":\\"0\\",\\"消息\\":{\\"ID\\":5,\\"FirstName\\":\\"John\\",\\"LastName\\":\\"Doe\\",\\"Email\\":\\"testemail@gmail.com\\",\\"密码\\"\":\\"testPass\\"、\\"CreationDate\\":\\"2016-10-26T15:01:08\\"、\\"RoleID\\": 1、\\"门码\\": 9999}}\""
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; }
}
完整的错误消息:
{“转换值时出错\“{\”状态\“:\”0\“,\”消息\“:{\”ID\”:5、\”名字\“:”约翰\“,”姓氏\“:”Doe \“,”电子邮件\“:\”testemail@gmail.com\“,”Password\“:”testPass\“,”CreationDate\“:”2016-10-26T15:01:08\“,”RoleID\”:1,““doorCode\”:9999}}\”键入“App1”。“结果”。路径“”,第1行,位置232。"}
你的数据模型,
var r = new ApiResult
{
status = "0",
message = new Account()
{
status = "0",
CreationDate = DateTime.Now,
Email = "foo@foo.com",
FirstName = "Trump",
ID = 1,
LastName = "Fck",
Password = "111",
RoleID = 1,
doorCode = 222
}
};
var jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(r);
var apiObject = Newtonsoft.Json.JsonConvert.DeserializeObject<ApiResult>(jsonResult);
jsonResult:
要解决问题,请点击这里查看应用程序。客户GetUser();
下面的代码按照C.Evenhui的回答为我工作,
var content = response.Content;
var jsonResult = JsonConvert.DeserializeObject(content).ToString();
var result= JsonConvert.DeserializeObject<Model>(jsonResult);
这里的内容类似于-“\”{\\“Id\\”:\\“92209\\”,\\“operatorId\\”:100000,\\“Status\\”:true。。。。。
您收到的json似乎已被序列化两次——首先从apireult
到string
,然后再到string
:
"\"{\\"status\\":\\"0\\",\\"message\\":...
第一个双引号可能是由您的调试器添加的,但是第二个(转义的\"
)似乎确实是您正在处理的数据的一部分。通过这种方式,错误消息也有意义,它反序列化了一个字符串
,然后尝试将其强制转换为一个ApiResult
。
尝试将数据反序列化为字符串,然后将其结果反序列化为apireult
,以确保情况属实-如果是这样,则需要更改服务器代码。
问题内容: 我要求Google帮我,我没有运气。:-(以下是产生错误的特定代码: 整个功能如下: 如果我错过了一些愚蠢的事情,请原谅我。谁能告诉我是什么引起了这个问题??? 问题答案: 问题在于$ uname是一个对象,而不是字符串。您需要调用$ uname的方法之一来访问数据。 应该这样做(或上述解决方案之一)。
问题内容: 我在一个名为Film_Release的字段中有一个表,该表的字符串值格式为 2012 年 4月20日 ( 星期五) 我正在遍历,我想在日期时间将它们转换并将其推出到另一个表中。我的第二张表有一个名为Films_Date的列,其格式为DATE。我收到此错误 DateTime类的对象无法转换为字符串 然后,我通过插入命令将$ newdate插入表中。 为什么会出现这样的错误? 问题答案:
我有JSON文件看起来像 所以这个键是一个字符串“SUBS_ID”,这个值是一个名为Feature细节的模型,它包含属性“特性设置名称、特性名称、...”。所以我用这样google.json库从JSON文件中读取, 然后我试图循环这个HashMap获取值,并将其转换为我的Feature细节模型, 这是我的FeatureDetails模型, 但我得到了一个例外"com.google.gson.int
我得到以上的错误,如果有人知道,然后告诉我。。。我将非常感激 Java: XML:
下面是托管活动片段: 有问题的行是代码段的最后一行。这是我的语录片段。 假设我对主机活动没有扩展support.v4的看法是正确的,那么我该怎么做呢?
我有一个家庭作业要重构一些代码来使用泛型。我觉得我为类做得很对。这是我的东西 当涉及到实例化时,我得到一个ClassCastException错误: 线程“main”java.lang.ClassCastException中出现异常:类java.lang.String无法强制转换为类edu.csc.node(java.lang.String位于加载程序“bootstrap”的模块java.base