c# - Json 反序列化元组问题

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

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

相关文章:

c# - 是否有 Owin.Security.Providers.OpenID 的强命名版本

c# - 如何修改帮助文件 (*.chm)?

java - Gson.toJson() 返回带有空字段的默认对象?

使用用户区域设置的 Silverlight 日期格式?

javascript - 如何全屏显示媒体播放器顶部的文本?

java - 使用Gson库将Java String对象转换为Json

php - 如何更改JSON输出格式以及如何支持汉字?

silverlight - 如何在 silverlight 中使用集合类作为静态资源

c# - 可以使用可移植类库通过 channel 工厂在Silverlight中使用WCF服务吗?

c# - 插入后获取结果ID