Opzione 1 - Creare un nuovo modello di
Invece di tornare
public IEnumerable<Person> Get()
ritorno
public People Get()
dove
public class People {
public IEnumerable<Person> People {get; set;}
}
Opzione 2 - tornare dinamica
Invece di tornare
public IEnumerable<Person> Get()
ritorno
public dynamic Get() {
IEnumerable<Person> p = //initialize to something;
return new {people = p};
}
Opzione 3 - modificare JsonMediaTypeFormatter
È ancora possibile tornare
public IEnumerable<Person> Get()
ma aggiungere la seguente classe:
public class PeopleAwareJsonMediaTypeFormatter : JsonMediaTypeFormatter
{
public override System.Threading.Tasks.Task WriteToStreamAsync(Type type, object value, System.IO.Stream writeStream, HttpContent content, TransportContext transportContext)
{
if ((typeof (IEnumerable<People>).IsAssignableFrom(type)))
{
value = new {people = value};
}
return base.WriteToStreamAsync(type, value, writeStream, content, transportContext);
}
}
ora in WebApiConfig basta registrare il nuovo formattatore al posto della vecchia JSON uno:
config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, new PeopleAwareMediaTypeFormatter());
fonte
2013-01-22 04:40:01