如何让 newtonsoft 将 yes 和 no 反序列化为布尔值

2024-04-04

注意:我已在此提要的底部提供了解决方案。

我有一个 C# Win 8 应用程序,其中我正在反序列化一些如下所示的 json:

{
    'Unit': [
        {
            'name':'House 123',
            isAvailable:'no'
        },
        {
            'name':'House 456',
            isAvailable:'yes'
        }]
}

进入使用此接口的类:

public interface IUnit
{
    string Name { get; }
    bool isAvailable { get; }
}

但是 Newtonsoft 抛出一个错误:

解析值时遇到意外字符:n。小路 'Unit[0].isAvailable,第 1 行,位置 42。

有没有办法扩展 Newtonsoft 根据结果对象属性类型 bool 解析是/否或 1/0?目前它仅适用于真/假。

有几篇关于类的自定义转换器的文章,但没有关于像 bool 这样的原始类型的文章。

有什么建议么?


public class MyBooleanConverter : JsonConverter
{
    public override bool CanWrite { get { return false; } }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        var value = reader.Value;

        if (value == null || String.IsNullOrWhiteSpace(value.ToString()))
        {
            return false;
        }

        if ("yes".Equals(value, StringComparison.OrdinalIgnoreCase))
        {
            return true;
        }

        return false;
    }

    public override bool CanConvert(Type objectType)
    {
        if (objectType == typeof(String) || objectType == typeof(Boolean))
        {
            return true;
        }
        return false;
    }
}


public interface IUnit
{
    string Name { get; }

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

如何让 newtonsoft 将 yes 和 no 反序列化为布尔值 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • FFmpeg:如何估计音频流中的样本数量?

    我目前正在编写一个小型应用程序 它利用 FFmpeg 库来解码 C 中的音频文件 尤其是 avformat 和 swresample 现在我需要音频流中的样本总数 我知道确切的数字只能通过实际解码所有帧才能找到 我只需要一个估计 这里的首选
  • MouseListener 被多次调用

    我使用此代码来获取作为 jLable 图标放置的图像的 X 和 Y 坐标 对此的答案建议了这种获取坐标的方法question https stackoverflow com questions 19977589 how to get x y
  • HashMap 可串行化

    HashMap实现了Serialized接口 所以可以序列化 我查看了 HashMap 的实现 并且 Entry 表被标记为瞬态 由于Entry 表是存储Map全部内容的表 如果不能序列化 那么反序列化时Map是如何构造回来的 如果你看来源
  • Matplotlib 3D绘图zorder问题

    我有一个由蓝色表面组成的图 通过绘制plot surface 和一个红色球体 通过绘制scatter 曲面的 zorder 设置为 0 球体的 zorder 设置为 1 尽管不设置任何 zorder 值会产生相同的结果 You can se
  • 如何使用 Rails 和 Paperclip 将照片存储在 Google Cloud Storage 上?

    到目前为止 我一直使用 Amazon S3 来存储用户的文件 这里需要做的就是 指定存储桶的 Amazon S3 凭证 add aws sdk gem 到 Gemfile 并在模型中 has attached file avatar sty
  • 如何将 gdb 附加到 docker 容器中运行的进程?

    我在 docker 容器中有一个长时间运行的进程 我想将 gdb 附加到该进程以查看正在运行的线程并获取堆栈跟踪 我可以从主机附加到进程 但无法解析任何符号 因为可执行文件位于文件系统中的不同位置 位于 docker 安装的卷中 并且共享系
  • 将 void 指针转换为 float*/int* 时取消引用

    A int i 10 void p i printf f n float p B float i 10 00 void p i no change printf d n int p 为什么 A 打印 0 0 而不是 10 0 如果我们把A改
  • C hack 用于存储占用 1 位空间的位?

    我有一长串 0 到 67600 之间的数字 现在我想使用一个 67600 个元素长的数组来存储它们 如果某个数字在集合中 则该元素设置为 1 如果该数字不在集合中 则该元素设置为 0 IE 每次我只需要 1 位信息来存储数字的存在 C C
  • 有没有办法“提取”Expression Blend 的 WPF 控件?

    我不确定组成 Expression Blend 的 UI 的 WPF 控件是否以可用的方式打包在应用程序中 例如单独的程序集等 但是如果不是 是否有一种方法可以 提取 这些控件 以便您可以您的应用程序中具有相同外观和功能的相同控件吗 我相信
  • 如何以编程方式保存用户设置?

    我有一个按钮 可以打开窗口颜色托盘 然后将选择的颜色分配给某个虚拟工作室中的选定元素 用户首先通过鼠标单击选择元素 然后根据元素 ID 分配颜色 因此 每次单击按钮时 相同或不同元素的颜色都会发生变化 元素 ID 是从当鼠标单击某个元素时触
  • 时间线的最佳技术

    现在卡扎菲40多年的统治已经结束 我想将他的统治时期与其他国家的统治时期构建一个时间线图 例如美国总统 德国总理等 因此 x 轴是时间 y 轴是国家和时间线 按正确的时间范围划分 显示美国的尼克松 福特等 当我尝试学习 R 时 我更喜欢该语
  • 在Python中将多个参数传递给pool.map()函数[重复]

    这个问题在这里已经有答案了 我需要某种方法来使用 pool map 中接受多个参数的函数 根据我的理解 pool map 的目标函数只能有一个可迭代作为参数 但有没有一种方法可以传递其他参数 在这种情况下 我需要传递一些配置变量 例如我的
  • Xcode 4.6 自动授权不起作用 - “没有有效的 aps 环境”

    我遇到了著名的错误 无法获取令牌 错误 错误域 NSCocoaErrorDomain Code 3000 找不到应用程序的有效 aps environment 权利字符串 UserInfo 0x413be0 NSLocalizedDescr
  • 将 JsDoc3 用于大型应用程序,如何将模块分组为部分/类别/子模块

    我正在开发一个应用程序 随着时间的推移 它会变得相当庞大 我决定使用JsDoc3 and DocStrap记录所有模块 模块是通过 require js 定义的 在某些地方它们的嵌套深度可达 3 或 4 层 到目前为止 我了解到 JsDoc
  • 生成 DTMF 音

    我想知道是否有人遇到过在 iPhone SDK 中生成铃声的方法 我正在尝试生成 DTMF 音调 但似乎找不到任何实质性内容 我还希望能够指定播放音调的时间 即模拟按住按钮而不是简单地按下按钮 我发现了一个名为 iPhreak 的开源应用程
  • 实体框架指南

    我正在尝试使用 SQL Server 2008 设置实体框架 我使用 Guid 作为表上的键 有没有办法设置它以便数据库自动生成密钥 我尝试将 RowGuid 设置为 true 并将列的默认值设置为 newid 不管怎样 映射的类仍然需要我
  • 触发 onsubmit 而不使用提交按钮

    我陷入困境 试图使用提交函数 formElement submit 提交我的表单 好吧 实际上它确实将表单输入值发送到后端 但我试图阻止它并在两者之间添加 ajax Jade pug form score form method POST
  • 想知道如何将 Groovy 2.3 与 Netbeans 8 结合使用?

    当我安装 Groovy 2 3 时 我很失望 我发现我无法将它与 Netbeans 8 一起使用 为什么 因为 Netbeans Groovy 支持固定在内置 Groovy 2 1 上 这与 Netbeans 支持 Ruby JRuby J
  • 如何发送APDU到Mifare Classic 1k卡?

    我想要实现的是将 APDU 命令发送到 MIFARE Classic 1K 卡以更改其 A 和 B 密钥 我能够与卡建立连接并使用默认密钥 FFFFFFFFFFFF 来读取块 0 和块 1 我使用了 HID MifareSamples 应用
  • 如何让 newtonsoft 将 yes 和 no 反序列化为布尔值

    注意 我已在此提要的底部提供了解决方案 我有一个 C Win 8 应用程序 其中我正在反序列化一些如下所示的 json Unit name House 123 isAvailable no name House 456 isAvailabl