C#Serialize Dictionary <ulong,ulong> to JSON </ulong,ulong>

时间:2010-09-10 15:04:50

标签: c# json serialization dictionary

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

new JavaScriptSerializer().Serialize(mydict)`
  

输入'System.Collections.Generic.Dictionary`2 [[System.UInt64,mscorlib,Version = 2.0.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,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'不支持序列化/反序列化字典,键必须是字符串或对象。

有一种简单的方法吗?也许通过LINQ或者相对简洁的东西将ulongs转换为字符串?

3 个答案:

答案 0 :(得分:18)

var dict = mapping.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString());`

会将任何Dictionary<K,V>转换为Dictionary<string,string>,然后序列化可以正常工作。

答案 1 :(得分:3)

使用NewtonSoft.Json代替JavaScriptSerializer来解决此问题:

例如:

JsonConvert.SerializeObject(mydict);

答案 2 :(得分:1)

博客http://dukelupus.wordpress.com/2011/05/04/asp-net-mvc-json-and-a-generic-dictionary/描述了一种扩展方法 字典ToJsonDictionary(此字典输入)