2015-10-05 104 views
2

在.NET中對序列化的快速問題(對它仍然很新穎)。字典序列化修改鍵的一部分爲小寫

我有一條路線返回Dictionary<string, ArbirartyModel[]>。問題在於結果。我已經把預期和實際放在下面。它似乎將所有字符降低到第一個下劃線之前的1個字符,然後將其他所有字符都放在下面。

預計

{ 
    TEST_ONE: "Value", 
    TEST_TOW: "Value" 
} 

實際

{ 
    tesT_ONE: "Value", 
    tesT_TOW: "Value" 
} 

我一直在四處張望,似乎this issue和其他幾個人都有關,但不幸的是,我不能改變什麼在Global.asax

任何幫助將ve非常感謝。

更新

[HttpGet, Route("result/goes/here")] 
public IHttpActionResult ReturnResult() 
{ 
    return Ok(new Dictionary<string, string>() {{"TEST_ONE", "Value"}, {"TEST_TOW", "Value"}}); 
} 

Ok是Web API(https://msdn.microsoft.com/en-us/library/dn314591.aspx

+0

你能後,你創建字典的代碼,該代碼在那裏你序列化呢? – Bas

+0

@Bas應該加在那裏。序列化發生在json.net – vernak2539

+0

我不相信這是JSON.NET的做法。顯示'//在此處添加結果....'的實際執行情況。見[mcve]。 – CodeCaster

回答

1

IHttpActionResult的一部分,你必須JSON.NET配置爲使用串行駱駝情況下屬性名稱。不幸的是,JSON.NET會將Dictionary類型與對象類型視爲相同,將每個鍵視爲屬性名稱。

違規的配置將是這個樣子:

JsonConvert.SerializeObject( <YOUR OBJECT>, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });