2012-05-18 16 views
5

我有我使用的json.net串行序列化的字典,它是目前生產使Web API連載字典屬性

{"phrases":[{"Key":"my-key1","Value":"blah"},{"Key":"my-key2","Value":"blah2"}]} 

但是我希望它輸出

{"phrases":["my-key1":"blah"},{"my-key2":"blah2"}]} 

我的模型看起來像

public class Phrases 
{ 
    public Dictionary<string, string> phrases; 
} 

有沒有我可以向數據屬性引起這種情況發生的短語模型?

我發現下面的,但不希望被返回一個字符串Serialize into a key-value dictionary with Json.Net?

UPDATE:

我擴展Web API控制器如下,如果我用JsonConvert.SerializeObject()我得到正確的序列化,但是我會有一個字符串返回。

public class PhraseController : ApiController 
    { 
     private IApplicationModel applicationModel; 

     public Phrases Get(string id) 
     { 
      var locale = new CultureInfo(id).LCID; 
      var phrases = applicationModel.Phrases.Where(x => x.Locale = locale).ToDictionary(x => x.Name, y => y.Value); 

      return new Phrases() { phrases = phrases }; 
     } 

     public PhraseController(IApplicationModel applicationModel) 
     { 
      this.applicationModel = applicationModel; 
     } 
    } 
+0

你使用哪種json.net版本?因爲''Newtonsoft.Json「version =」4.0.8「'產生這個:'{」phrases「:{」my-key1「:」blah「,」my-key2「:」blah2「}}'' JsonConvert.SerializeObject(短語);' – nemesv

+0

@nemesv已更新我的問題 – Tom

+1

我想知道如果我的問題是它仍然使用DataContractJsonSerializer而不是json.net – Tom

回答

2

我設法讓它在最後工作。

問題是它仍在使用DataContractJsonSerializer。在添加JsonNetFormatter之前,我添加了一行刪除格式化程序,現在序列化正確。

GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter); 

GlobalConfiguration.Configuration.Formatters.Add(new JsonNetFormatter(null)); 

(我用它仍然使用DataContractJsonSerializer beta版)