C#序列化字典<;乌龙,乌龙>;到JSON

C#序列化字典<;乌龙,乌龙>;到JSON,c#,json,serialization,dictionary,C#,Json,Serialization,Dictionary,我正在尝试将字典序列化为JSON,并获得以下异常: new JavaScriptSerializer().Serialize(mydict)` 键入'System.Collections.Generic.Dictionary`2[[System.UInt64,mscorlib,Version=2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.UInt64,mscorlib,Vers

我正在尝试将字典序列化为JSON,并获得以下异常:

new JavaScriptSerializer().Serialize(mydict)`
键入'System.Collections.Generic.Dictionary`2[[System.UInt64,mscorlib,Version=2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.UInt64,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],mscorlib,Version=2.0.0.0.0,Culture=neutral,PublicKeyToken=B77A561934E089]]“”不支持字典的序列化/反序列化,键必须是字符串或对象

有没有一个简单的方法可以做到这一点?也许可以通过LINQ或其他相对简洁的方式将Ulong转换为字符串

var dict = mapping.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString());`
这将把任何
字典
转换成
字典
,然后序列化工作。

博客描述了一种扩展方法
Dictionary to JSONDictionary(此字典输入)

使用
NewtonSoft.Json
而不是
JavaScriptSerializer
来解决此问题:

Ex:

JsonConvert.SerializeObject(mydict);

这很好用。值得注意的是,字典之类的东西也可以通过这种方式序列化,同时保留复杂类型:mapping.ToDictionary(item=>item.Key.ToString(),item=>item.Value);这是一条非常糟糕的错误消息,难道一个值对象还不是一个对象吗?可能是重复的,我首先清楚地提出了这个问题。为什么另一个答案没有标记为重复?虽然这个答案已经有好几年的历史了,但这里包含了答案的基本部分,并提供了链接供参考。