在将数据保存到隔离存储中时获取SerializableException

时间:2015-08-20 06:29:46

标签: windows-phone-8 windows-phone jsonserializer

我正在使用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的已知类型列表中。

请帮我解决此问题,提前致谢

1 个答案:

答案 0 :(得分:0)

您无法(轻松)序列化数据,因为序列化程序不知道如何序列化Newtonsoft.Json.Linq.JObject类型。

我们可以尝试找出如何让序列化程序使用这种类型,这可能会花费很多时间,也可能不会花费很多时间,或者我们可以停下来想一想......

您可以在

行中获取响应数据

string someData = responseDataDict["SomeData"].ToString();

什么是someData?这是

{
"MESSAGE": "Some Message",
"UI_MESSAGE": {
    "LEFT": "OK",
    "RIGHT": "CANCEL",        
}

这是一个json字符串。一个序列化的javascript对象。 它已经血腥序列化了。

localSettings中保存