.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
相关产品推荐
相关产品推荐

