2013-07-18 51 views
0

我想用ODataMediaTypeFormatter對字典im模型進行serialaze。如何在Asp.Net中使用ODataMediaTypeFormatter對字典進行序列化

JsonNet序列字典作爲對象:

{ 
Length: 10, 
Weight: 100, 
} 

ODataMediaTypeFormatter(與ODataJsonLight串行器)序列爲空數組:

[ 
{}, 
{} 
] 

ODataMediaTypeFormatter序列字典作爲KeyValuePair和KeyValuePair的集合作爲空對象。

我嘗試覆蓋默認格式化程序並將字典轉換爲複雜類型的參數,但我有在ODataJsonLight序列化器(它是Microsoft.Data.Edm的一部分)Edm驗證錯誤。

有沒有人有任何想法如何正常序列化字典?

+0

這將是不可能得到的OData來了解您的'object',除非您使用接口或抽象類值。例如'KeyValuePair ' –

回答

1

詞典在OData中不是標準數據類型。所以,Web API OData不支持它們原生的。但是,您可以將它們建模爲鍵值對(複雜類型)的集合,但我會建議您爲此聲明一個特殊類型。

不管怎麼說,建模代碼將被(假設你有Dictionary<string,string>),

Type kvpType = typeof(KeyValuePair<string, string>); 
var kvpEdmType = builder.AddComplexType(kvpType); 
kvpEdmType.AddProperty(kvpType.GetProperty("Key")); 
kvpEdmType.AddProperty(kvpType.GetProperty("Value")); 
+0

該方法適用於'KeyValuePair ',但不適用於'KeyValuePair '。 –

+0

適用於KeyValuePair 我猜測它是因爲OData約定模型構建器不適用於不可變類型。 –

相關問題