【问题标题】:C# Serialize Dictionary<ulong,ulong> to JSONC# 将字典<ulong,ulong> 序列化为 JSON
【发布时间】:2011-04-10 18:54:01
【问题描述】:

我正在尝试将字典序列化为 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 或相对简洁的方式将 ulong 转换为字符串?

【问题讨论】:

标签: c# json serialization dictionary


【解决方案1】:

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

例如:

JsonConvert.SerializeObject(mydict);

【讨论】:

    【解决方案2】:
    var dict = mapping.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString());`
    

    这会将任何Dictionary&lt;K,V&gt; 转换为Dictionary&lt;string,string&gt;,然后序列化就可以工作了。

    【讨论】:

    • 这非常有效。值得注意的是,像 Dictionary 这样的东西也可以通过这种方式序列化,同时保留复杂类型:mapping.ToDictionary(item => item.Key.ToString(), item => item.Value);
    【解决方案3】:

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

    【讨论】:

    • 虽然这个答案已经有几年了it would be preferable 在这里包含答案的基本部分,并提供参考链接。
    猜你喜欢
    • 2019-05-14
    • 2011-05-15
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2016-03-15
    • 2010-10-15
    • 2012-11-28
    • 2015-06-12
    相关资源
    最近更新 更多