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

C# Hl7.Fhir.R4接收Patient参数时Extension值为null问题

问题根因

该问题既不是接口方法缺少装饰器配置,也不是Hl7.Fhir.Model.Patient类型本身不支持反序列化,核心原因是ASP.NET Core默认的JSON序列化器不兼容FHIR规范定义的value[x]多态反序列化规则。
FHIR资源中Extension.Value属于抽象的DataType类型,对应JSON序列化时会根据实际值类型生成valueString/valueInt/valueCodeableConcept这类带类型后缀的属性名,HL7.Fhir库内置了专属转换器来识别这类命名规则、完成类型绑定,但系统默认的JSON序列化器只会查找名为Value的属性,匹配失败就会给Value字段赋值null。

修复方案

根据项目使用的JSON序列化器选择对应配置即可:

基于Newtonsoft.Json的项目

  • 安装NuGet包Hl7.Fhir.Serialization.NewtonsoftJson
  • 在服务注册阶段替换默认序列化配置,添加FHIR专用转换器:
builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.Converters.Add(new FhirNewtonsoftJsonConverter());
        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    });

基于System.Text.Json的项目(.NET 5+推荐)

  • 安装NuGet包Hl7.Fhir.Serialization.SystemTextJson
  • 在JSON序列化配置中添加FHIR专属转换器:
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(new FhirJsonConverter());
    });

注意:你提供的请求示例中valueInt字段传入了字符串类型的"10",不符合FHIR类型规范,valueInt对应整型值,需传入不带引号的数值10,否则即使配置正确转换器也会触发反序列化异常。

内容的提问来源于stack exchange,提问作者Juan David Cabezuelo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:24:17