Json用元组

时间:2016-11-07 16:00:35

标签: c# json silverlight windows-phone-8 deserialization

我为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

所以我现在正在搜索这个问题的示例/帮助(遗憾的是我还没有成功)如何正确地反序列化字符串。

1 个答案:

答案 0 :(得分:2)

2小时后我找到了答案:D

整个问题是我期待一个元组但是我得到的是一个已经是TupleList所以整个魔术是:

string TestString = streamReader.ReadLine();
NewRoute = JsonConvert.DeserializeObject<TupleList<GeoCoordinate, short>>(TestString);