我正在使用Windows Phone 8 app。我需要调用api来获得一些响应,我正在序列化并保存到本地设置中 在保存这些数据的同时,我得到了类型&System; Run.Sunization.Serialization.SerializationException'。
的例外情况。My Code is,
string someData = responseDataDict["SomeData"].ToString();
if someData != null)
{
Dictionary<string, Object> someDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(someData);
Datastore.SaveData = stringDict;
}
public static Datastore
{
get
{
if (localSettings.Contains("SaveData"))
{
return (Dictionary<string, Object>)localSettings["SaveData];
else
return null;
}
}
set
{
localSettings["SaveData"] = value;
localSettings.Save();
}
}
}
来自api的回复是,
"MESSAGE": "Some Message",
"UI_MESSAGE": {
"LEFT": "OK",
"RIGHT": "CANCEL",
}
我认为问题出在&#34; UI_MESSAGE&#34;,
例外是,
System.Runtime.Serialization.SerializationException:输入&#39; Newtonsoft.Json.Linq.JObject&#39;数据合同名称&#39; ArrayOfKeyValueOfstringJTokeneJCYCtcq:http://schemas.microsoft.com/2003/10/Serialization/Arrays&#39;不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。
请帮我解决此问题,提前致谢
答案 0 :(得分:0)
您无法(轻松)序列化数据,因为序列化程序不知道如何序列化Newtonsoft.Json.Linq.JObject
类型。
我们可以尝试找出如何让序列化程序使用这种类型,这可能会花费很多时间,也可能不会花费很多时间,或者我们可以停下来想一想......
您可以在
行中获取响应数据 string someData = responseDataDict["SomeData"].ToString();
什么是someData
?这是
{
"MESSAGE": "Some Message",
"UI_MESSAGE": {
"LEFT": "OK",
"RIGHT": "CANCEL",
}
这是一个json字符串。一个序列化的javascript对象。 它已经血腥序列化了。
在localSettings
中保存。