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

相关推荐
缘空如是15 小时前
基础工具包之JSON 工厂类
java·json·json切换
墨痕诉清风1 天前
CVS文件转Json格式
json·python3·cvs
数研小生1 天前
1688商品列表API:高效触达批发电商海量商品数据的技术方案
大数据·python·算法·信息可视化·json
devmoon1 天前
快速了解兼容 Ethereum 的 JSON-RPC 接口
开发语言·网络·rpc·json·区块链·智能合约·polkadot
九转成圣1 天前
告别肉眼解析!Java 递归实现 JSON 全路径自动化探测工具
java·自动化·json
JQLvopkk1 天前
C# 实现Http Json格式 Post 、Get 方法请求 winform服务器
http·c#·json
小高Baby@2 天前
JSON、bind、form
数据结构·json
阿蒙Amon2 天前
TypeScript学习-第11章:配置文件(tsconfig.json)
学习·typescript·json
一起养小猫2 天前
Flutter for OpenHarmony 进阶:Timer组件与倒计时系统深度解析
android·网络·笔记·flutter·json·harmonyos
女王大人万岁2 天前
Go语言JSON标准库(encoding/json):功能解析与实战指南
服务器·开发语言·后端·golang·json