2015-02-24 55 views
2

我正在做一個web api調用,我希望控制器方法以json格式返回數據。web api方法以json格式返回數據?

我使用的模型類是User.cs:

public partial class User 
{ 
    public int UserID { get; set; } 
    public string city { get; set; } 
    public string email { get; set; } 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
    public string phone { get; set; } 
    public string password { get; set; } 
} 

我想通過以下控制器方法返回的所有JSON格式的用戶電子郵件數據。

public string GetUsers() 
{ 
    IEnumerable<User> users = db.Users.ToList(); 
    var jsonSerialiser = new JavaScriptSerializer(); 
    var json = jsonSerialiser.Serialize(users); 
    return json; 
    //string json = JsonConvert.SerializeObject(users); 
    //return json; 
} 

所有我得到的是空的JSON,如:

[] 

請幫助。我已經介紹了在stackoverflow上推薦的所有方法。

回答

3

這是簡單得多,比你想象的,你不需要使用jsonSerializer。

您可以將方法更改爲以下:

public List<string> GetEmails() 
{ 
    return db.Users.Select(e => e.email).ToList(); 
} 

那麼,如果客戶端指定application/json內容返回爲JSON。

請注意上述,我只有發回的電子郵件地址,而不是用戶細節,我很懷疑你將要發送的密碼進行的JSON。

+0

你的代碼不會工作。您使用電子郵件屬性創建對象,但嘗試將其作爲字符串返回。無論是'.Select()'電子郵件或更改返回類型爲'列表' – jgauffin 2015-02-24 14:36:36

+0

@jgauffin好點,我原本就喜歡它,但改變了它。現在更新,謝謝。 – hutchonoid 2015-02-24 14:38:31

+1

您仍然返回一個對象。糾正它爲你;)無論哪種方式+1爲解釋它爲什麼工作(以及如何)。 – jgauffin 2015-02-24 14:39:22