2013-11-09 18 views
2

我有以下幾點:轉換列表,以JSON和返回它的Web API行動

var data = new List<DataModel>(); 

其中的DataModel如下:

public class DataModel { 
    public DateTime Date { get; set; } 
    public Int32 Users { get; set; } 
} 

如何把這個名單成JSON形式和歸還在WebAPI 2.0行動?

謝謝 米格爾

回答

17

你可以做到這一點的魔道...

public class JsonListObjectController : ApiController 
    { 
     public List<DataModel> Get() 
     { 
      var data = new List<DataModel>() 
     { 
      new DataModel() {Date = DateTime.Today, Users = 100}, 
      new DataModel() {Date = DateTime.Today, Users = 120} 
     }; 

      return data; 
     } 

    } 

,或者你可以做到這一點的:「我想留在控制方式」

public HttpResponseMessage Get() 
    { 
     var data = new List<DataModel>() 
     { 
      new DataModel() {Date = DateTime.Today, Users = 100}, 
      new DataModel() {Date = DateTime.Today, Users = 120} 
     }; 

     return new HttpResponseMessage() 
      { 
       Content = new StringContent(JArray.FromObject(data).ToString(), Encoding.UTF8, "application/json") 
      }; 
    } 
+0

第一次使用Web API我遇到了這個問題,你的回答對我有幫助。然而,Chrome確實讓我感到困惑的是它的XML響應,而不是JSON,這個鏈接可以給任何碰到相同問題的人提供更多信息:http://stackoverflow.com/questions/9847564/how-do-i-get-asp- net-web-api-to-return-json-instead-of-xml-using-chrome – KDT

+1

@KDT你會很快了解到直接從瀏覽器發出請求來測試API會帶給你很多痛苦。使用專爲工作而設計的工具,如小提琴,郵差,運行鏡,devHttpClient等 –