c# – 找到两个json对象之间的差异

前端之家收集整理的这篇文章主要介绍了c# – 找到两个json对象之间的差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在.Net中有没有任何库可以帮助比较和找到两个json对象之间的差异?我已经找到了一些可用于 JavaScript解决方案,但C#没有什么有趣的.我的问题是要根据比较来以某种方式创建更改标记的json.以便用户可以看到更改的位置.

解决方法

using Microsoft.XmlDiffPatch;
using Newtonsoft.Json;

将每个json转换为xml并使用MS XmlDiff libary.在nuget可用.在另一个xml文档中给出了差异,在这里我写到控制台.这适用于单元测试.

public bool CompareJson(string expected,string actual)
{
    var expectedDoc = JsonConvert.DeserializeXmlNode(expected,"root");
    var actualDoc = JsonConvert.DeserializeXmlNode(actual,"root");
    var diff = new XmlDiff(XmlDiffOptions.IgnoreWhitespace |
                           XmlDiffOptions.IgnoreChildOrder);
    using (var ms = new MemoryStream())
    using (var writer = new XmlTextWriter(ms,Encoding.UTF8))
    {
        var result = diff.Compare(expectedDoc,actualDoc,writer);
        if (!result)
        {
            ms.Seek(0,SeekOrigin.Begin);
            Console.WriteLine(new StreamReader(ms).ReadToEnd());
        }
        return result;
    }
}

猜你在找的C#相关文章