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

我有两个需要比较的
JSON对象.但是我想排除某些属性.有没有一种有效的方法可以不重复所有键?

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

谢谢!

最佳答案 好吧,首先我建议将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);
    }
}
点赞