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

