我为Windows Phone 8创建了一个Silverlight项目,它是一个元组列表,里面有一个GeoCoordinate和一个短值。 为此,我创建了一个TupleList类:
public class TupleList<T1, T2> : List<Tuple<T1, T2>>
{
public void Add(T1 item, T2 item2)
{
Add(new Tuple<T1, T2>(item, item2));
}
}
所以我能够像这样创建我的元组:
new Tuple<GeoCoordinate, short> TupleName;
在下一步中,我想在txt / json文件中写入,这也很好用:
string Json = JsonConvert.SerializeObject(TupleName);
...
System.Text.Encoding.UTF8.GetBytes(Json.ToCharArray());
但现在我的问题是再次加载此文件并再次反序列化,我正在寻找解决方案:
string TestString = streamReader.ReadLine();
Tuple<GeoCoordinate, short> TestTuple;
TestTuple = JsonConvert.DeserializeObject<Tuple<GeoCoordinate, short>>(TestString);
ListBox_WayPoints.Items.Add(TestTuple);
在ReadLine()
正常工作之前,我得到一个像"Item1: 'GeoCoordinate stuff', Item2: 'short value'"
这样的字符串,但JsonConvert.DeserializeObject<Tuple<GeoCoordinate, short>>
方法总是崩溃,我不知道为什么因为调试器只是跳转到调试器断点,整个错误消息是:
Ausnahme ausgelöst: "Newtonsoft.Json.JsonSerializationException" in Newtonsoft.Json.DLL
Ausnahme ausgelöst: "Newtonsoft.Json.JsonSerializationException" in mscorlib.ni.dll
所以我现在正在搜索这个问题的示例/帮助(遗憾的是我还没有成功)如何正确地反序列化字符串。
答案 0 :(得分:2)
2小时后我找到了答案:D
整个问题是我期待一个元组但是我得到的是一个已经是TupleList所以整个魔术是:
string TestString = streamReader.ReadLine();
NewRoute = JsonConvert.DeserializeObject<TupleList<GeoCoordinate, short>>(TestString);