在.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; } }