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

.NET 8 Azure Function返回列表调试有值但Chrome显示为空

问题原因与解决方法

核心原因

.NET 8 中 Azure Functions 默认使用的 System.Text.Json 序列化器,默认配置仅序列化公共属性(带get/set的成员),不再像.NET 6那样默认序列化公共字段。你的MyObject类用的是公共字段而非属性,所以序列化后变成空对象。

具体解决办法

方法1:将公共字段改为公共属性(推荐)

把MyObject的字段改成带访问器的属性,适配默认序列化规则:

public class MyObject
{
    public string Prop1 { get; set; }
    public int Prop2 { get; set; }
}

方法2:修改Json序列化配置,允许序列化字段

如果不想修改类结构,可以在Function项目的Program.cs中全局配置序列化选项,让System.Text.Json包含公共字段:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(builder =>
    {
        builder.Services.Configure<JsonSerializerOptions>(options =>
        {
            options.IncludeFields = true;
        });
    })
    .Build();

host.Run();

如果是使用HttpResponseData手动序列化,也可以在序列化时指定选项:

var jsonContent = JsonSerializer.Serialize(myList, new JsonSerializerOptions { IncludeFields = true });
response.Body = new MemoryStream(Encoding.UTF8.GetBytes(jsonContent));
response.Headers.Add("Content-Type", "application/json; charset=utf-8");

方法3:排查序列化干扰项

确认MyObject的字段没有被[JsonIgnore]等特性标记,也没有设置为非公共访问级别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:10:58