You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React接收后端返回数组元素为空对象的问题排查

问题排查:React + C# 前端获取空对象数组

问题场景

用React + C#开发网站,从数据库取数据时遇到异常:后端调试数据正常,但前端resp.json()拿到的数组长度正确,每个元素却是空对象。

相关代码如下:

后端控制器代码

[HttpGet("GetUsersListByRoleAsync")]
public async Task<ActionResult<IEnumerable<UserSimple>>> GetUsersListByRoleAsync(int roleId)
{
    try
    {
        IEnumerable<UserSimple> result = await aRepo.GetUsersListByRoleAsync(roleId);
        return Ok(result);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

后端UserSimple类定义

public class UserSimple
{
    int Id_User { get; set; }
    string DomainName { get; set; }
}

前端DbHandler方法

async GetUsersListByRoleAsync(roleId: number): Promise<UserSimple[]> {
    const resp = await fetch(`api/Administration/GetUsersListByRoleAsync?roleId=${roleId}`, {credentials: "include"})

    if (resp.status >= 400)
        throw new Error(`[AdministrationDbHandler]: ${await resp.text()}`)

    const usersList = await resp.json() as UserSimple[]
    return usersList
}

前端UserSimple类型定义

export type UserSimple = {
    id_User: number
    domainName: string
}

问题原因

后端UserSimple类的属性没有显式设置public访问修饰符,C#中类成员默认是private。ASP.NET Core默认的JSON序列化组件无法访问private属性,因此序列化后的每个UserSimple对象都是空的,前端解析后自然得到空对象数组,但数组长度和后端返回的集合数量一致。

解决方法

把UserSimple类的属性改成public,让序列化组件能读取到属性值:

public class UserSimple
{
    public int Id_User { get; set; }
    public string DomainName { get; set; }
}

内容的提问来源于stack exchange,提问作者Quribe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:20:18