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

Blazor WASM调用GetFromJsonAsync返回正确数量空对象如何解决

问题原因排查与解决方案

你遇到的返回对象数量正确但内容为空的问题,90%以上是JSON序列化/反序列化环节配置错误导致,可按以下步骤逐一排查:

第一步:定位问题发生在前端还是后端

直接通过浏览器地址栏、Postman等工具调用GET api/OrderStatus接口,查看返回的原始JSON内容:

  • 如果返回的JSON中所有对象都是{}空对象:问题出在后端序列化环节
  • 如果返回的JSON中包含正常的属性键值对:问题出在前端反序列化环节

后端序列化问题常见原因及修复

1. 实体类属性不符合序列化规则(最高频)

.NET默认的System.Text.Json序列化器只会序列化带公共get访问器的属性,以下情况都会导致属性被忽略:

  • 成员是字段而非属性:比如写的是public string number; 而非public string number { get; set; },字段默认不会被序列化
  • 属性访问修饰符非public:比如internal string number { get; set; }、private string number { get; set; }
  • 属性只有set没有get:比如public string number { set; }

修复方案:

  • 把需要序列化的成员改为带public get的属性
  • 如果必须用字段,可在Program.cs配置序列化允许包含字段:
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.IncludeFields = true;
    });

2. 循环引用导致序列化异常

你的实体存在嵌套关联(Customer→Order→Item),如果Order类有反向导航到Customer的属性、Item类有反向导航到Order的属性,会触发循环引用,默认序列化器会抛出异常,如果你之前配置了忽略循环引用,可能会导致关联属性被清空。

修复方案:
在Program.cs配置序列化处理器处理循环引用:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles;
        // 按需调整序列化深度,默认值为32,嵌套层级过深可以调大
        options.JsonSerializerOptions.MaxDepth = 64;
    });

3. 实体属性加了[JsonIgnore]特性

检查Customer、Order、Item类的属性上是否标注了[JsonIgnore],该特性会让序列化器跳过对应属性。


前端反序列化问题常见原因及修复

1. 前后端实体类属性不匹配

检查Blazor WASM项目中定义的Customer、Order、Item类的属性名、类型和后端返回的JSON键完全匹配:

  • 默认ASP.NET Core会把属性名序列化为驼峰格式,比如后端public string Number { get; set; }会变成JSON的"number":"xxx",System.Text.Json默认反序列化大小写不敏感,一般不会有问题,但如果属性名拼写完全不一致就会反序列化失败
  • 类型不匹配也会导致属性值为空,比如后端是int类型的number,前端属性定义为bool类型

2. 验证原始返回内容

可以先打印接口返回的原始字符串确认数据正常,再手动反序列化:

protected async override Task OnInitializedAsync()
{
    // 先拿原始字符串打印验证
    string rawJson = await Http.GetStringAsync("api/OrderStatus");
    Console.WriteLine(rawJson);
    customer = JsonSerializer.Deserialize<Customer[]>(rawJson);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:06:06