我正在尝试将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转换为字符串?
答案 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(此字典输入)