c# - 如何比较两个忽略 C# 中某些键的 JSON?

标签 c# json json.net

我有两个需要比较的 JSON 对象。但是我想排除某些属性。有没有一种无需遍历所有键的有效方法?

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

谢谢!

最佳答案

好吧,首先我建议将 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);
    }
}

关于c# - 如何比较两个忽略 C# 中某些键的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28948395/

相关文章:

c# - 在 Visual Studio 2015 中实现接口(interface)时自动用#region 包围生成的代码

c# - 404 未找到 Ajax jquery MVC

json - SwiftyJSON : How can I add token?

java - 使用 Gson 和改造的 Java 的 Json 错误 [预期为 BEGIN_ARRAY,但在第 1 行第 70 列路径 $.Data 处为 BEGIN_OBJECT]

c# - 从 JSON 中排除域模型对象的属性

c# - 静态类中的匿名方法是非静态的?如何调用它?

c# - Protobuf-net 编译为 DLL 字符串 [] 导致损坏的 dll

ios - 为 iOS 应用程序返回带有丰富标记的文本

c# - 在 MongoDB 中使用嵌套数组保存字典

json.net - 用于将 json 模式转换为示例 JSON 的 C# 库