后端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 如何将字符串映射到枚举类型

相关推荐
消失的旧时光-19438 小时前
TCP 流通信中的 EOFException 与 JSON 半包问题解析
android·json·tcp·数据
Yeats_Liao12 小时前
Go Web 编程快速入门 08 - JSON API:编码、解码与内容协商
后端·golang·json
霍格沃兹_测试13 小时前
软件测试 | 测试开发 | app自动化测试之Appium 原理 与 JsonWP 协议分析
json
Moshow郑锴2 天前
Oracle CLOB中包含不可见的控制字符导致golang中json转换失败问题
oracle·golang·json
带土12 天前
vscode json
vscode·json
羊锦磊2 天前
[ Redis ] SpringBoot集成使用Redis(补充)
java·数据库·spring boot·redis·spring·缓存·json
好好研究4 天前
JAVAEE知识整理之AJAX、JSON
ajax·java-ee·json·1024程序员节
明月与玄武5 天前
Wireshark 网络抓包分析:JSON 和 HTTPS!
https·wireshark·json
勉灬之5 天前
通过npm run XXX命令生成uniapp的pages.json文件
npm·uni-app·json
码农葫芦侠6 天前
Qt如何翻译JSON内容
qt·json