当键是非字符串对象时,是否有可能JSON一个.net字典?



我想有一个返回json序列化字典的控制器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()

相关内容