2015-02-10 67 views
0

我有一些代碼負責將一些數據發佈到web api。我正在嘗試發佈詞典。但是當請求被髮布時,key屬性不能被序列化。PostAsJsonAsync無法序列化字典中的對象

有我的代碼:

response = await base.HttpClientInstance.PostAsJsonAsync<Dictionary<ItemDto, string>>(url, dummyItems); 

有小提琴手會議紀要:

Content-Type: application/json; charset=utf-8 
Host: debug.foo.foo.com 
Content-Length: 78 
Expect: 100-continue 
Connection: Keep-Alive 

{"Foo.Contract.Items.ItemDto":"87a0a711-6ecb-4ef5-9aed-04f7573344e1"} 

問題出在哪裏,什麼想法?

+0

[Serialize Class contains Dictionary member]可能的重複(http://stackoverflow.com/questions/495647/serialize-class-containing-dictionary-member) – VMAtm 2015-02-10 10:40:49

+0

你不能輕易地序列化實現IDictionary的類 – VMAtm 2015-02-10 10:41:09

回答

0

乍一看,您需要在您的ItemDto實現中覆蓋ToString ...系統的默認實現是僅打印類的名稱,例如Foo.Contract.Items.ItemDto

+0

是。但是我對PostAsJsonAsync方法的期望是正確地序列化所有屬性。其實它可以通過你的接近來解決。我們可以使用ToString方法序列化自己。謝謝:) – btungut 2015-02-10 17:32:42

+0

'HttpClientInstance'發佈只是在說HTML,它全是基於文本的:它不知道你想如何「串化」你的'ItemDto',所以它依靠你通過重寫'ToString'來告訴它。 [**接受答案**](http://stackoverflow.com/help/accepted-answer)。 – 2015-02-10 20:03:30