You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用System.Text.Json反序列化ConsoleColor字典列表时出现异常

问题原因及修复方案

错误原因

你在序列化时通过JsonStringEnumConverter(JsonNamingPolicy.CamelCase)将ConsoleColor枚举转换为驼峰格式的字符串(比如Blue变成blue),但反序列化时没有配置相同的转换器。System.Text.Json默认无法将JSON中的字符串键/值自动映射到ConsoleColor枚举,尤其是驼峰格式的字符串与枚举的帕斯卡命名不匹配,即使开启PropertyNameCaseInsensitive也无法解决字典键的枚举转换问题。

修复方法

在反序列化的JsonSerializerOptions中添加同样的JsonStringEnumConverter配置,确保序列化和反序列化的规则一致:

修改后的反序列化代码:

string json = File.ReadAllText(filePath);
var options = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true,
    Converters = {
        new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)
    }
};
this.colours = JsonSerializer.Deserialize<List<Dictionary<ConsoleColor, ConsoleColor>>>(json, options);

说明

添加JsonStringEnumConverter(JsonNamingPolicy.CamelCase)后,转换器会自动将JSON中的驼峰字符串(如"blue")映射到对应的ConsoleColor枚举值(ConsoleColor.Blue),同时保留JSON文件的人类可读特性,完全符合你需要可编辑文本格式的需求。

内容的提问来源于stack exchange,提问作者Plunder Bunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:23:00