首页 > 解决方案 > 为什么 JSON 对象是空的?

问题描述

我有一个 GET 入口点UsersController。但是这个响应的是一组空对象。当我调试入口点时,列表 ( 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。我真的不知道发生了什么。而且我必须写很多,因为我无法编辑这篇文章

标签: c#jsonasp.net-coredapper

解决方案


很可能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; }
}

推荐阅读