2011-07-06 63 views
6

我想有控制器的GET操作,返回一個JSON序列化的字典。字典的關鍵是一個簡單的類,它有兩個基元作爲屬性 - 稱之爲ClassOne。不過,我試圖JSON字典時收到以下錯誤:當密鑰是非字符串對象時,是否有可能JSON .NET字典?

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

短語「鍵必須是字符串或對象」意味着它可以序列化對象具有作爲其鍵的字典。但是,我找不到這樣做的方法。在這種情況下我有什麼選擇?

+1

你用什麼API來「JSON」你的數據? –

+0

不指定您正在使用哪個JSON序列化庫,此問題不完整。使用'DataContractJsonSerializer',我得到它的工作,並沒有遇到一個異常,雖然它產生的JSON可能有點古怪(不能說)。另外,你能提供一個能夠重現你的問題的最小代碼示例嗎? –

回答

7

那麼,沒有。 .net中的字典會在Javascript中序列化爲哈希。散列只能有字符串作爲鍵,所以你將無法序列化非字符串鍵。你可以簡單地改變你的字典成一個序列化的一個是這樣的:

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

或許清潔將是給ClassOne一個ToString倍率,只需要調用代碼k.Key.ToString()以上。

+0

看起來我們正在創建一個字符串鍵出對象。謝謝! – JustOnePixel

相關問題