后端json数据反序列化枚举类型不匹配的错误

后端json数据反序列化枚举类型不匹配的错误

后端返回的json格式在前端反序列化报错System.Text.Json.JsonException:"The JSON value could not be converted to TodoReminderApp.Models.Priorityen. Path: .Data.Items.values[0].Priority | LineNumber: 0 | BytePositionInLine: 304."

System.Text.Json 在反序列化枚举时出现了类型不匹配的错误。这通常是因为 JSON 中的枚举值表示方式(字符串或数字)与 C# 枚举的预期格式不匹配。

要解决这个问题,你需要在反序列化时配置 JsonSerializerOptions 来正确处理枚举类型

解决方法

复制代码
 Converters = { new JsonStringEnumConverter() } // 👈 添加这一行

这里添加了JsonStringEnumConverter转换器,它会:

  1. 将 JSON 中的字符串值(如 "Low"、"Medium"、"High")转换为对应的枚举值

  2. 保持属性名称的不区分大小写设置

确保你的项目引用了System.Text.Json命名空间,这个转换器就在这个命名空间下。

如果服务器返回的是数字而不是字符串(例如 1、2、3),则不需要这个转换器,这时候可能是你的枚举定义与服务器返回的数值不匹配导致的问题

你遇到的问题是:

  • 服务器返回的 JSON 中 Priority 字段是一个 字符串值 (如 "High"),

  • 但你的客户端模型中 Priority 是一个 枚举类型 (如 Priorityen),

  • 默认情况下 System.Text.Json 不会自动将字符串映射到枚举 ,除非使用 JsonStringEnumConverter


✅ 解决方案:使用 JsonStringEnumConverter

你需要在反序列化时告诉 System.Text.Json 如何将字符串映射到枚举类型

相关推荐
真上帝的左手6 分钟前
6. 接口-专栏说明
json·restful
Leoysq4 小时前
UGUI 读取JSON动态克隆背包道具信息
json
望外追晚5 小时前
mask_color_map.json丢失,导致分割标签.png无法导入X-Anylabeling的解决办法
人工智能·计算机视觉·json·paddlepaddle
咘噜biu6 小时前
Java 安全的打印对象数据到日志
java·json·日志·脱敏
未来魔导15 小时前
go语言中json操作总结
数据分析·go·json
青鱼入云1 天前
@JsonValue和@JsonCreator介绍
json·jackson
这儿有一堆花1 天前
JSON 与 MongoDB:直存对象的便利与隐性代价
数据库·mongodb·json
╰⋛⋋⊱⋋翅膀⋌⊰⋌⋚╯2 天前
cJSON使用
json
正在走向自律2 天前
从Oracle到金仓KES:PL/SQL兼容性与高级JSON处理实战解析
数据库·sql·oracle·json·金仓数据库·电科金仓·兼容性挑战
皮卡龙3 天前
Java常用的JSON
java·开发语言·spring boot·json