为什么JSON对象为空?

时间:2018-06-24 13:54:18

标签: c# json asp.net-core dapper

我在UsersController上有一个GET入口点。但这是对一组空对象的响应。当我调试入口点时,列表(IEnumerable<UserViewModel>)也不为空,UserViewModels也不为空。

但这是它的响应:

[{},{},{},{},{},{},{},{},{},{},{},{}]

以及控制器代码:

[HttpGet]
public async Task<IEnumerable<UserViewModel>> Get()
{
    var u = _stObjMap.Default.Obtain<UserTable>();
    using (var ctx = new SqlStandardCallContext())
    {
        var a =  await ctx[u].Connection.QueryAsync<UserViewModel>("SELECT UserId, UserName, PrimaryEMail, CreationDate from CK.vUser where UserId <> 0 and UserId <> 1");
        return a;
    }
}

我真的不认为问题出在控制器上。 我正在使用Dapper,我真的不知道发生了什么。而且我不得不写很多东西,因为我无法编辑这篇文章

1 个答案:

答案 0 :(得分:0)

很可能UserViewModel没有定义公共属性。

这就是为什么将对象序列化为JSON时不显示键值对的原因。

根据查询,确保模型中具有匹配的属性,以便Dapper查询映射所选的列

public class UserViewModel
    public int UserId { get; set; } 
    public string UserName { get; set; }
    public string PrimaryEMail { get; set; }
    public DateTime CreationDate { get; set; }
}