当密钥是非字符串对象时,是否可以将JSON作为.NET字典?

Jus*_*xel 8 json asp.net-mvc-3

我想让控制器GET操作返回一个JSON序列化的字典.字典的关键是一个简单的类,它有两个基元作为属性 - 称之为ClassOne.但是,尝试JSON字典时收到以下错误:

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

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

Mil*_*ric 8

好吧,不.来自.net的字典将序列化为Javascript中的哈希.哈希只能将字符串作为键,因此您将无法序列化非字符串键.您可以简单地将字典转换为可序列化的字典,如下所示:

myDictionary.ToDictionary(k => k.Key.Prop1 + "|" + k.Key.Prop2, v => v.Value);
Run Code Online (Sandbox Code Playgroud)

也许更清洁将是给ClassOne一个ToString覆盖并调用k.Key.ToString()在上面的代码.