如何在 C# 中比较两个 JSON 并忽略某些键?

2023-12-31

我有两个需要比较的 JSON 对象。但是我想排除某些属性。有没有一种有效的方法可以做到这一点,而无需迭代所有键?

我正在使用 JSON.NET,它具有 JToken.DeepEquals() 并且非常出色,但它不允许我排除某些键。

Thanks!


好吧,首先我建议将 JSON 解析为某种对象。我们不应该建议外部工具,但您应该能够通过简单的谷歌搜索找到满意的东西。

反序列化通常需要创建某种类/结构来保存 json 对象中的键/值。现在您有了一个可以添加方法的对象。

重写对象的 .Equals()、== 运算符和 != 运算符函数,并提供比较两个对象的实现细节,忽略不重要的键。

一些覆盖的示例代码:

public class DateRange
{
    public DateRange(DateTime start, DateTime end)
    {
        if (start>end)
        {
            throw new ArgumentException("Start date time cannot be after end date time");
        }
        Start = start;
        End = end;
    }

    public DateTime Start { get; private set; }

    public DateTime End { get; private set; }

    public static bool operator ==(DateRange range1, DateRange range2)
    {
        if (range1.Start == range2.Start && range1.End == range2.End)
        {
            return true;
        }
        return false;
    }

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

如何在 C# 中比较两个 JSON 并忽略某些键? 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • Android 11 (R) 查询 ACTION_IMAGE_CAPTURE 意图时返回空列表

    设备 模拟器 Pixel 3a Android 11 Code final List
  • AFNetworking - 如何为一个键指定多个值

    我正在尝试使用 AFHTTPClient 方法 postPath 将一个参数键的多个值传递给 HTTP 请求 但是 参数变量是 NSDictionary 因此我无法为我的键 email 设置多个值 我尝试将电子邮件值作为逗号分隔的字符串发送
  • 如何从 PDF 文件中提取页面? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何 Perl 脚本可以从 PDF 文件获取页面并将其转换为另一个 PDF 文件 您要求 Perl 所以这是一个很好的解决方案CAM
  • 什么时候您更愿意声明异常而不是在 Java 中处理异常?

    我知道如果我们希望调用方法处理该异常 则可以为该方法声明异常 如果封闭方法抛出 IOException 这甚至允许我们执行诸如写入 OutputStream 之类的操作 而无需将代码包装在 try catch 块中 我的问题是 任何人都可以
  • 删除样式标签上的样式属性

    我有一个STRING with html内容 我想删除style属性上style使用 javascript 正则表达式标记 如下所示 before
  • YQL 天气结果一半时间为空

    雅虎数据有时无法获取数据 query results is null or not an object 我在 Chrome 55 0 2883 87 和 fierfox 50 1 0 上发生了这种情况 这是我正在使用的 YQL 以及回应 q
  • MongoDB:地理空间索引数组的格式不正确

    在尝试设置使用 MongoDB 上的地理空间索引时 我遇到了错误消息 指出位置数组的格式不正确 这是我的收藏 测试 id ObjectId 4f037ac176d6fdab5b00000a CorporateId XYZ12345 Plac
  • React Native WebView 应用程序在按后退按钮时不退出

    设置按下后退按钮后返回功能后 React Native WebView 应用程序不会在按后退按钮时退出 我希望当 webview 不在主页上时按后退按钮返回功能 当 webview 位于主页上时然后退出应用程序 export default
  • 在Javascript中,如何有条件地更新对象的属性?

    我见过这个帖子 https stackoverflow com questions 11704267 in javascript how to conditionally add a member to an object想知道是否有一种方
  • 更改子类java中的类变量类型

    我有一个名为 模块 的课程 public abstract class Module protected Map
  • 轨道 3 饼干

    我有一个简单的应用程序 用户可以在文本字段中输入内容以获得各种结果 我想要一个功能 如果用户输入某些内容然后关闭浏览器选项卡 那么下次他们来时 我可以向他们显示他们之前 最近的搜索 即使他们关闭整个浏览器并再次打开它 这种情况也会持续存在
  • Python-删除字符串的前两行

    我在这里搜索了许多关于删除字符串前两行的线程 但我似乎无法让它与我尝试过的每个解决方案一起使用 这是我的字符串的样子 version 1 00 6992 4 32063 9 1198 106 59 0 00064 0 99993 0 012
  • Python 快速排序运行时错误:cmp 中超出最大递归深度

    我正在编写一个程序 它将读取包含 5 163 个姓名的文本文件 文本文件可见here http pastebin com BAKTJKy6 然后我想将名称存储到一个名为 名称 的列表中 之后 我根据名称包含的字母数量对列表进行排序 较短的名
  • Java 证书客户端 SSL:无法找到请求目标的有效证书路径

    我们需要客户端身份验证才能向我们的某些 Web 服务发送 RESTful 请求 我已经通过 key 工具在本地 mac 操作系统上安装了客户端证书 pem 和密钥 这些不是自签名的 openssl pkcs12 export name my
  • mysql 统计重复项

    我有一张这样的桌子 mysql gt desc user changes Field Type Null Key Default Extra id varchar 16 NO PRI email varchar 255 YES MUL NU
  • go 中所有类型的前置函数

    我为 go 编写了一个非常小的前置函数 func prepend slice int elms int int newSlice int for elm range elms newSlice append newSlice elm for
  • 有效去除数组中的重复项

    如何从具有以下约束的数组中删除和记录重复项 运行时间最多必须为 O n log n 使用的额外内存最多必须为 O n 结果必须满足以下条件 重复项必须移动到原始数组的末尾 必须保留每个唯一元素第一次出现的顺序 例如 从此输入 int A 2
  • Android 中可扩展列表视图中的图像图标

    我想在可扩展列表视图中添加图像图标 我看过他们仅在子元素中添加的教程 是否有其他方法可以在父元素中添加图像图标 任何帮助 将不胜感激 提前致谢 您还可以在 XML 中定义自己的 groupIndicator 首先定义自己的drawable
  • 如何有效地从向量C++中删除元素

    我有一个由向量 对 V1 V2 组成的向量 称为pairV1V2 其形式如下 1 2 3 938 462 4837 gt V1 V2 3 9 13 938 0472 944 81 84 93 938 84 845 那么我需要保留以下内容 1
  • 如何在 C# 中比较两个 JSON 并忽略某些键?

    我有两个需要比较的 JSON 对象 但是我想排除某些属性 有没有一种有效的方法可以做到这一点 而无需迭代所有键 我正在使用 JSON NET 它具有 JToken DeepEquals 并且非常出色 但它不允许我排除某些键 Thanks 好