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

相关推荐
历程里程碑18 小时前
Protobuf vs JSON vs XML:小白该怎么选?
xml·大数据·数据结构·elasticsearch·链表·搜索引擎·json
Java成神之路-2 天前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
我命由我123452 天前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
带刺的坐椅2 天前
RFC 9535:JSONPath 的标准化之路
java·json·jsonpath·snack4·rfc9535
孙同学20202 天前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
ID_180079054732 天前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
电商API&Tina3 天前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
神の愛4 天前
利用json-to-ts工具进行转换,放置在typeScript.ts文件中
javascript·typescript·json
BUG_MeDe4 天前
从Json对象中提取某个对象的一点注意--libjson-c
linux·json
HelloTonyGo4 天前
个人游戏笔记本免费“养龙虾”(七)OpenClaw的openclaw.json文件的基本配置
ubuntu·json·配置·读写权限·openclaw