我为 Windows Phone 8 创建了一个 silverlight 项目,其中包含一个包含地理坐标和短值的元组列表。 为此,我创建了一个 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
所以我现在正在寻找有关此问题的示例/帮助(不幸的是我还没有成功)如何正确反序列化字符串。
最佳答案
好吧,2小时后我找到了答案:D
整个问题是我期望一个 Tuple 但我得到的已经是一个 TupleList 所以整个魔力是:
string TestString = streamReader.ReadLine();
NewRoute = JsonConvert.DeserializeObject<TupleList<GeoCoordinate, short>>(TestString);
关于c# - Json 反序列化元组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40469383/