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

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

后端返回的json格式在前端反序列化报错System.Text.Json.JsonException:"The JSON value could not be converted to TodoReminderApp.Models.Priorityen. Path: .Data.Items.values0.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 如何将字符串映射到枚举类型

相关推荐
小小测试开发14 小时前
LLM 结构化输出测试:Schema 契约 + 故障注入,让工具调用的 JSON 不再靠重试赌运气
人工智能·json
hasty16 小时前
_proto__ 不是普通键:从 JSON 反序列化看原型污染
安全·json
代码中介商19 小时前
JSON 完全指南:从语法到项目实战
json
名字还没想好☜20 小时前
Go 用 json.Decoder 流式解析大 JSON:边读边处理不爆内存
开发语言·后端·golang·go·json
gf132111121 小时前
【python_发送飞书卡片消息_直接组装JSON格式发送卡片】
python·json·飞书
有梦想的咕噜1 天前
Newtonsoft.Json (Json.NET) 常用方法汇总
linux·json·.net
数据狐(Datafox)2 天前
京东商品列表API接口解析(附 JSON 样例)
数据库·爬虫·json
mengzhi啊2 天前
缓存类CacheDataManager把临时数据存入json。做成插件·
qt·缓存·json
golang学习记3 天前
Go 1.27新特性: json/v2使用有趣指南
开发语言·golang·json
Token掘金室3 天前
JSON模式结构化输出报错
java·服务器·json