json - 当键是非字符串对象时,是否可以将 .NET 字典 JSON 化?

标签 json asp.net-mvc-3

我想要返回 JSON 序列化字典的 Controller GET 操作。字典的关键是一个简单的类,它有两个原语作为属性——称之为 ClassOne。但是,我在尝试对字典进行 JSON 处理时收到以下错误:

System.Collections.Generic.Dictionary`2[[ClassOne],[ClassTwo]]' is not supported for serialization/deserialization of a dictionary, keys must be strings or objects.

短语“键必须是字符串或对象”意味着可以序列化以对象作为键的字典。但是,我找不到这样做的方法。在这种情况下我有什么选择?

最佳答案

嗯,不。来自 .net 的字典将序列化为 Javascript 中的哈希。哈希只能将字符串作为键,因此您将无法序列化非字符串键。您可以像这样简单地将您的字典转换为可序列化的字典:

myDictionary.ToDictionary(k => k.Key.Prop1 + "|" + k.Key.Prop2, v => v.Value);

也许更干净的方法是给 ClassOne一个 ToString覆盖并调用k.Key.ToString()在上面的代码中。

关于json - 当键是非字符串对象时,是否可以将 .NET 字典 JSON 化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603986/

相关文章:

javascript - 如何使用 Jquery 从 JSON API 获取用户个人资料信息?

java - Jackson Json 并没有这样的方法错误

java - jackson 处理接口(interface)

c# - 带有两个 where 子句的 Linq 语句

asp.net-mvc-3 - ASP.NET MVC 3、Razor View 和可移植区域

javascript - 不显眼的 JQuery 无法在 IE8 中运行?

java - 如何验证 json 到 BigDecimal 的位数,但仅验证小数位数?

json - 如何在Elasticsearch中将xml存储为字段?

asp.net-mvc-3 - Application_End 被调用过早/频繁

asp.net-mvc-3 - 如何在 Razor 中创建 else if 语句?