加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:51:29 所属栏目:百科 来源:网络整理
导读:在.Net中有没有任何库可以帮助比较和找到两个json对象之间的差异?我已经找到了一些可用于 JavaScript的解决方案,但C#没有什么有趣的.我的问题是要根据比较来以某种方式创建更改标记的json.以便用户可以看到更改的位置. 解决方法 using Microsoft.XmlDiffPat
在.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;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读