2013-11-07 2 views
2

У меня есть проект веб-API с C#, и я пытаюсь настроить Json Serializer (Newtonsoft JSON), чтобы возвращать всегда завернутый ответ, потому что когда мой контроллер api просто возвращает логическое или целое число (или другие примитивные типы), я просто получить объект, но я хочу что-то вроде:Newtonsoft json Serialize Примитивные типы WebApi

{ d : true } 

обернутого результата, но без изменения контроллера, я увидел, что есть много конфигурации вещи на:

config.Formatters.JsonFormatter.SerializerSettings 

но я не нашел тот, который предоставляет это поведение.

Спасибо!

+0

Что вы получаете в данный момент? – Kami

+0

Просто «правда» или цифры – juan25d

+0

Кто-нибудь? Получил ли OP решение? . возвращение десятичного числа 0.54 дает именно это вместо обернутого ответа, например {"Результат": 0.54} – Jaans

ответ

0

Привет, наконец, я решил создать свой собственный Formatter, унаследованный от JsonMediaTypeFormatter, как это:

config.Formatters.Add(new WrappedJsonMediaTypeFormatter()); 

public class WrappedJsonMediaTypeFormatter : JsonMediaTypeFormatter 
{ 

     public WrappedJsonMediaTypeFormatter() 
     { 
      base.SerializerSettings.Culture = new System.Globalization.CultureInfo("en-GB"); 
      base.SerializerSettings.DateFormatString = "dd/MM/yyyy"; 
     } 

     public override System.Threading.Tasks.Task WriteToStreamAsync(System.Type type, object value, System.IO.Stream writeStream, System.Net.Http.HttpContent content, System.Net.TransportContext transportContext) 
     { 
      var obj = value; 
      if (type.IsPrimitive || Object.ReferenceEquals(type, typeof(string))) 
       obj = new { data = value }; 

      if (Object.ReferenceEquals(value, null)) 
       obj = new { }; 

      return base.WriteToStreamAsync(type, obj, writeStream, content, transportContext); 
     } 
    } 
Смежные вопросы