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

Web API返回的Enum被额外引号包裹问题排查求助

Web API返回的Enum被额外引号包裹问题排查求助

各位大佬好,我遇到一个奇怪的序列化问题,想请大家帮忙分析下:

我在项目的Startup文件里配置了System.Text.Json的全局序列化规则,添加了JsonStringEnumConverter,目的是让接口返回枚举值时用字符串形式,而不是默认的索引数字,配置代码如下:

options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());

为了验证效果,我定义了一个测试枚举,还写了两个接口:

public enum TestEnum
{
    Value1,
    Value111
}

// 直接返回枚举值的接口
public IActionResult GetEnum()
{
    return Ok(TestEnum.Value1);
}

但当我用客户端调用这个接口,读取返回内容时,发现拿到的字符串是""Value1""——多了一层双引号!客户端调用的核心代码是这样的:

public async Task GETEnumValue()
{
    // 客户端生成逻辑省略
    var result = client.SendAsync(request).Result;
    var stringResponse = result.Content.ReadAsStringAsync().Result;
}

更奇怪的是,如果我返回一个包含该枚举属性的C#模型,比如:

public class TestModel
{
    public TestEnum EnumProp { get; set; }
}

public IActionResult GetEnumModel()
{
    return Ok(new TestModel { EnumProp = TestEnum.Value1 });
}

这种情况下返回的JSON里,枚举值就是正常的"Value1",不会出现额外引号。

我实在搞不懂直接返回枚举值时为什么会多一层引号,有没有大佬能给点排查方向或者原因分析呀?

备注:内容来源于stack exchange,提问作者eightynine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:42:58