使用Xamarin方法的Newtonsoft Json和System.ObjectDisposedException

时间:2014-12-15 13:43:38

标签: c# ios json xamarin json.net

我有一个对象列表,我将其保存为json文件,如下所示:

List<Sede> listSede;
string json = JsonConvert.SerializeObject(listSede);
System.IO.File.WriteAllText(pathToJson+"\filiali.json",json);

然后我用它读了它们:

StreamReader r = new StreamReader (pathToJson + fileName);  
string jsonread = r.ReadToEnd();
List<Sede> items = new List<Sede> ();
items = JsonConvert.DeserializeObject<List<Sede>>(jsonread);

Sede继承自MKAnnotation,在我获取每个项目中的对象列表之后,我尝试将注释添加到地图中,如下所示:

foreach (Sede c in items)
                map.AddAnnotation (c);

但它没有添加任何注释,如果我尝试检查元素c我看到有一些字段未初始化并且有一个objectDisposedException,这里是图像:enter image description here

1 个答案:

答案 0 :(得分:1)

MKAnnotation不是可序列化的,因此当您对其进行反序列化时,继承自它的类不会被完全膨胀。

您可以尝试编写自己的JsonConverter来正确处理Sede,或者您可以这样做:

foreach (Sede c in items) {

  // add a constructor to Sede that properly creates a new object based on a partially inflated one  
  Sede cc = new Sede(c);

  map.AddAnnotation (cc);
}