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

反序列化至枚举时ArgumentException错误:值‘connected’未找到

解决Swagger生成代码反序列化枚举时的ArgumentException问题

这个问题我之前也碰到过,核心原因就是枚举的字符串值和反序列化器的预期不匹配,结合你给出的错误信息和JSON示例,咱们一步步排查解决:

1. 先确认Swagger定义与生成的枚举代码是否匹配

首先检查你的Swagger规范文件(YAML/JSON)里connectedStatus对应的枚举定义,是不是明确包含了connected这个字符串值?

如果Swagger里的枚举是这样写的:

components:
  schemas:
    YourProfileModel:
      properties:
        connectedStatus:
          type: string
          enum:
            - connected
            - disconnected

那生成的代码应该会自动给枚举成员加上EnumMember特性,类似这样:

public enum ConnectedStatus
{
    [EnumMember(Value = "connected")]
    Connected,
    [EnumMember(Value = "disconnected")]
    Disconnected
}

如果Swagger里的枚举值是首字母大写的Connected,那生成的枚举就不会有这个特性,反序列化小写的connected自然会报错。

2. 配置反序列化器支持大小写不敏感或驼峰映射

如果你的枚举代码已经是正确的,但反序列化器默认严格匹配大小写,可以通过配置解决:

如果你用的是Newtonsoft.Json(Json.NET)

在序列化/反序列化的配置里添加StringEnumConverter,并设置大小写不敏感或驼峰匹配:

var jsonSettings = new JsonSerializerSettings();
// 方案1:直接支持驼峰命名的字符串匹配
jsonSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
// 方案2:完全忽略大小写匹配
jsonSettings.Converters.Add(new StringEnumConverter { CaseSensitive = false });

如果你用的是System.Text.Json

修改序列化配置:

var jsonOptions = new JsonSerializerOptions
{
    // 支持驼峰命名的枚举字符串
    Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) },
    // 同时开启属性名大小写不敏感(可选)
    PropertyNameCaseInsensitive = true
};

3. 临时修复:手动补全EnumMember特性

如果暂时无法修改Swagger定义,可以直接修改生成的枚举代码,给对应的成员加上EnumMember特性:

using System.Runtime.Serialization;

public enum ConnectedStatus
{
    [EnumMember(Value = "connected")]
    Connected,
    // 其他枚举成员同理
    [EnumMember(Value = "disconnected")]
    Disconnected
}

这样反序列化器就能正确识别JSON里的connected字符串了。

验证测试

修改后可以用你的示例JSON再测试一次:

{
 "profileDescription" : "profileDescription",
 "videoURL" : "http://example.com/aeiou",
 "imageURL" : "http://example.com/aeiou",
 "imageURLs" : [ "http://example.com/aeiou", "http://example.com/aeiou" ],
 "name" : "name",
 "connectedStatus" : "connected",
 "id" : "046b..."
}

应该就能正常反序列化,不会再抛出Requested value 'connected' was not found的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:25