2015-02-24 52 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