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

.NET Core控制台应用读取appsettings.json配置节至模型类异常排查

问题分析与解决办法

核心问题

你的配置中deelnemers是JSON数组(用[]包裹),但模型类Klanten里的Deelnemers属性定义为单个Deelnemer对象,类型不匹配导致配置绑定失败,所以该属性为空。

可行解决办法

1. 修改模型属性类型为集合(推荐)

将Klanten类中的Deelnemers属性改为集合类型(如List<Deelnemer>或数组Deelnemer[]),匹配配置的数组结构:

public class Klanten
{
    [JsonPropertyName("naam")]  
    public string? Naam { get; set; }

    [JsonPropertyName("deelnemers")]
    public List<Deelnemer>? Deelnemers { get; set; } // 改为List集合
}

public class Deelnemer
{
    [JsonPropertyName("naam")]
    public string? Naam { get; set; }

    [JsonPropertyName("opslaglocatie")]
    public string? OpslagLocatie { get; set; }
}

修改后再用Configuration.GetSection("klanten").Get<List<Klanten>>()即可正常绑定所有属性。

2. 若需单个对象,手动处理集合元素

如果业务逻辑中deelnemers永远只有一个元素,可以先绑定为集合,再手动提取第一个元素赋值:

// 先定义支持集合的临时模型
public class KlantenTemp
{
    [JsonPropertyName("naam")]  
    public string? Naam { get; set; }

    [JsonPropertyName("deelnemers")]
    public List<Deelnemer>? DeelnemersList { get; set; }
}

// 绑定后转换为目标模型
var tempKlanten = Configuration.GetSection("klanten").Get<List<KlantenTemp>>();
var klanten = tempKlanten.Select(t => new Klanten
{
    Naam = t.Naam,
    Deelnemers = t.DeelnemersList?.FirstOrDefault()
}).ToList();

3. 确认配置绑定的序列化特性匹配

如果项目中使用了Newtonsoft.Json而非默认的System.Text.Json,需要将JsonPropertyName替换为Newtonsoft的JsonProperty特性:

using Newtonsoft.Json;

public class Klanten
{
    [JsonProperty("naam")]  
    public string? Naam { get; set; }

    [JsonProperty("deelnemers")]
    public List<Deelnemer>? Deelnemers { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:20:22