【问题标题】:web api method to return data in json format?web api方法以json格式返回数据?
【发布时间】:2015-02-24 14:03:30
【问题描述】:

我正在进行 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 上推荐的所有方法。

【问题讨论】:

    标签: asp.net json asp.net-mvc asp.net-web-api asp.net-web-api2


    【解决方案1】:

    这比你想象的要简单得多,你不需要使用 jsonSerializer。

    您可以将方法更改为以下内容:

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

    那么如果客户端指定application/json,则内容返回为json。

    请注意以上内容,我发回电子邮件地址,而不是完整用户详细信息,因为我非常怀疑您是否希望以 json 格式发送密码。

    【讨论】:

    • 您的代码不起作用。您创建一个具有电子邮件属性的对象,但尝试将其作为字符串返回。要么只是.Select() 电子邮件,要么将返回类型更改为List&lt;object&gt;
    • @jgauffin 好点,我最初像上面一样,但改变了它。已更新,谢谢。
    • 您仍然返回了一个对象。为您更正了它;)无论哪种方式,都需要 +1 来解释它为什么起作用(以及如何起作用)。
    • @jgauffin 再次感谢,这将教会我在不先测试的情况下尝试回答。太担心有人打我的答案。 :)
    • 如果我想调用 api/user 之类的 api 来以 json 格式向我显示所有用户的名字和电子邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2013-09-21
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多