2012-05-18 2 views
5

나는 내가 json.net 시리얼 라이저를 사용하여 직렬화하고 사전을 가지고 있고, 현재 내가 출력을 원하는 그러나 만들기 웹 API를 직렬화 사전 속성

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

를 생산

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

난에 적용 할 수있는 데이터 속성이처럼

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

내 모델 본다 이 일을 일으키는 문구 모델?

내가 께서이 리뷰가 아니라 문자열을 반환하지 않으 Serialize into a key-value dictionary with Json.Net?

UPDATE :

다음과 같이 내가 JsonConvert.SerializeObject()를 사용하는 경우 저는 어떻게해야합니까, 웹 API를 컨트롤러를 확장하고 올바른 직렬화, 그러나 그때 반환 할 문자열이 것입니다.

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 버전을 사용합니까 (난 여전히 DataContractJsonSerializer를 사용하여 베타 버전을 사용하고 있습니다)? ''Newtonsoft.Json "version ="4.0.8 "'이 다음을 생성하기 때문에 : {{"my-key1 ":"blah ","my-key2 ":"blah2 "}}'' JsonConvert.SerializeObject (phrase); ' – nemesv

+0

@nemesv가 내 질문을 – Tom

+1

업데이트했습니다. 내 문제가 json.net 대신 DataContractJsonSerializer를 사용하고 있는지 궁금합니다. – Tom

답변

2

나는 그걸 결국 작동시킬 수 있었다.

여전히 DataContractJsonSerializer을 사용하고있는 것이 문제였습니다. JsonNetFormatter을 추가하기 전에 포맷터를 제거한 행을 추가했는데 이제 올바르게 직렬화됩니다.

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

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