将某个 JSON 值映射到 Enum 值 C#

2023-12-22

我正在为 Stack Exchange API 创建类。这过滤器对象 https://api.stackexchange.com/docs/types/filter类型包含成员filter_type这将是safe, unsafe, or invalid。所以我创建了一个像这样的枚举:

[JsonConverter(typeof(StringEnumConverter))]
public enum FilterType
{
    safe,
    @unsafe, // Here lies the problem.
    invalid
}

Since unsafe是一个关键字,我必须为其添加一些前缀。但是我怎样才能使值“不安全”自动映射到@unsafe? JSON 示例:

{
  "filter": "....",
  "filter_type": "unsafe",
  "included_fields": [
    "...",
    "....",
    "....."
  ]
}

我怎样才能反序列化它,这样filter_type自动转换为FilterType.@unsafe?

Update- 解决了:

在标识符之前使用@符号可以使其与关键字相同。即使 @ 出现在智能感知中,它也能正常工作。


您可以使用 JsonProperty,如下所示

public enum FilterType
{
    safe,
    [JsonProperty("unsafe")]
    @unsafe, // Here lies the problem.
    invalid
}

然后就可以正常使用了

class MyClass
{
    public FilterType filter_type { get; set; } 
}

public class Program
{
    public static void Main()
    {
        var myClass = JsonConvert.DeserializeObject<MyClass>(json);
        var itsUnsafe = myClass.filter_type == FilterType.@unsafe;
        Console.WriteLine(itsUnsafe);
    }

    public static string json = @"{
  ""filter"": ""...."",
  ""filter_type"": ""unsafe"",
  ""included_fields"": [
    ""..."",
    ""...."",
    "".....""
  ]
}";
}

输出是:

true

您可以在这里查看工作示例:https://dotnetfiddle.net/6sb3VY https://dotnetfiddle.net/6sb3VY

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将某个 JSON 值映射到 Enum 值 C# 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti

随机推荐

  • D语言:初始化动态多维数组最佳实践?

    只是好奇这是否是初始化动态多维数组的最佳实践D http www d programming language org index html 他们的语言参考中有一个关于数组的部分 但我不太确定它是否超出了我想要完成的目标 class Map
  • 当用户单击图表时创建 MarkerView

    我已经搜索并搜索了当用户使用 Swift 的图表 是 iOS 图表 单击条形图中的条形时如何显示 MarkerView 文档指出该库能够使用 MarkerViews 突出显示值 使用可自定义的弹出视图 但我不知道如何显示 我希望当用户单击条
  • Watin - 如何使用弹出页面测试网站

    我正在使用 WatiN Net 中的 Web 应用程序测试 在 Dynamics CRM 4 0 网站上进行集成测试 CRM 使用大量弹出窗口 例如 单击列表中的联系人会打开一个新的浏览器窗口 其中包含该联系人的详细信息 我想测试 登录 C
  • 将多个文件加载并命名到 R 中

    我有超过 1000 个数据集 我想加载到 R 中 并在加载时单独命名每个数据集 我发现要加载它们 我可以使用以下命令 temp list files pattern csv for i in 1 length temp assign tem
  • 从 OpenCV Canny 边缘检测器获取角度

    我想使用 OpenCV 的 Canny 边缘检测器 如中概述的这个问题 https stackoverflow com questions 11987483 opencvs canny edge detection in c 例如 cv C
  • 无法将类型“System.Collections.Generic.List<>”隐式转换为“System.Threading.Tasks.Task<>>”

    我遇到了例外 无法隐式转换类型 System Collections Generic List
  • 如何将日期选择器日期更改为 NSDate 类型但秒数为零

    我有一个日期选择器 它返回一个 NSdate 值 我想要将秒数的日期值设置为 0 我有在 Objective c 中执行此操作的代码 如下所示 NSTimeInterval time floor date timeIntervalSince
  • VBA Excel - ACCESS 中的更新记录

    我遇到问题了 我想使用 EXCEL 中的 VBA 更新 Access 数据库表中的现有记录 My code sqlik UPDATE query which works in access Set ZAP QUERY2 baza Creat
  • 将文本插入现有/外部 Draftjs 文本字段

    我正在开发一个需要将文本插入到contenteditable true div a Draftjs准确地说 基于文本字段 现在我知道 Draft js 使用 React 并且应该以这种方式使用 但在这种情况下 该应用程序已经存在 并且这是与
  • Angular 2 中的多个模块

    我有一个 Angular 2 应用程序 RC7 它最初是作为单个组件 但很快就以各种不同 有时完全不相关 的方式在整个项目中使用 其结果是 单个NgModule引导所有组件似乎是一个糟糕的主意 并且有大量的膨胀 我正在努力寻找一种拥有多个模
  • Azure Cosmos DB 使用基于角色的访问控制读取数据

    我在 Azure 中有一个 CosmosDB 我想授予用户读取各种集合内的数据的权限 我尝试给他们 读者 角色 这让他们知道存在 CosmosDB 并且他们可以看到一些元数据 但他们无法访问其中的数据 我为他们分配了 Cosmos DB 帐
  • Bash:有任何命令可以替换文本文件中的字符串吗?

    我有一个包含许多文本文件的目录层次结构 我想在每次特定的文本字符串出现在其中一个文件中时搜索它 并将其替换为另一个字符串 例如 我可能想将每次出现的字符串 Coke 替换为 Pepsi 有谁知道如何做到这一点 我想知道是否有某种 Bash
  • Angular 2 路由器 - CanActivate Guard

    我正在实现 CanActivate 防护 以便在用户会话无效时将用户重定向到登录页面 关于会话是否有效的检查是通过服务完成的 因此我从警卫那里订阅服务调用以获取会话有效性状态 我已经调试了代码 一切似乎都正常工作 事实上 当会话无效时 应用
  • 使用另一个文件中的行范围替换单独文件中字符串中出现的每 2 个 n

    我有三个文件 0 txt e 0 1 txt具有以下相同内容 sun t car snif house group tree home cool t machine shoes shirt shop t car snif house gro
  • 在设备上安装 Windows Phone 应用程序的不同方法

    我开发了一个Windows Phone 8应用程序 我有一个开发者帐户和解锁的设备 现在我可以通过 Windows Phone 开发 sdk 在我的手机中部署 安装应用程序 现在我想在另一个设备上安装这个应用程序 我朋友的设备 他在不同的位
  • 如何在 Netbeans 中打开“项目”面板

    在 Netbeans 中 代码所在的左上角曾经有两个面板 一个称为 项目 您可以在其中单击项目名称以打开其中所有目录和文件的树 然后可以双击一个文件来编辑它 下面是导航面板 显示您正在查看的文件中包含的类名称 方法等 我不小心单击了项目面板
  • 无法在 Kotlin 中构建发布版本

    将我的 Android 项目转换为 Kotlin 后 我无法构建发布版本 该错误似乎与 Proguard 有关 我看到 155 个警告 例如 Warning com example app activity MainActivity 1 c
  • iOS 11 navigationItem.titleView 宽度未设置

    在 iOS11 上使用 navigationItem titleView 查看行为 其中 titleView 的宽度不是屏幕的完整宽度 我有一个设置为 titleView 的自定义视图 在 iOS11 之前 视图将填充导航栏区域 但 iOS
  • NSDateFormatter “月份”的 3 个字母而不是完整的单词

    NSDateFormatter formatter NSDateFormatter alloc init formatter setDateFormat dd MM YYYY HH mm formatter setTimeZone NSTi
  • 将某个 JSON 值映射到 Enum 值 C#

    我正在为 Stack Exchange API 创建类 这过滤器对象 https api stackexchange com docs types filter类型包含成员filter type这将是safe unsafe or inval