当前位置: 首页 > news >正文

秦皇岛优化网站排名美好乡村建设网站

秦皇岛优化网站排名,美好乡村建设网站,邯郸wap网站建设报价,公司做网站都需要什么流程简介 该方法用于比较两个Json文件是否完全一致,仅考虑内容若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的 实现代码 调用 using CompareJsonFiles;Console.WriteLine(" 输入信息 ");Console.WriteL…

简介

  • 该方法用于比较两个Json文件是否完全一致,仅考虑内容
  • 若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的

实现代码

  • 调用
using CompareJsonFiles;Console.WriteLine("================= 输入信息 ===================");Console.WriteLine("请输入源Json文件路径:");
var sourcePath = Console.ReadLine();Console.WriteLine($"{Environment.NewLine}请输入目标Json文件路径:");
var targetPath = Console.ReadLine();Console.WriteLine($"{Environment.NewLine}您输入的源路径为:{sourcePath},目标路径为:{targetPath}");Console.WriteLine($"================= 输入信息 =================== {Environment.NewLine}");CompareJsonHelper.CompareJsonFiles(sourcePath?.Trim(), targetPath?.Trim());
  • 实现
using Newtonsoft.Json.Linq;namespace CompareJsonFiles;/// <summary>
/// 比对Json文件的帮助类
/// </summary>
public static class CompareJsonHelper
{/// <summary>/// 比较两个JSON文件的内容/// </summary>/// <param name="sourcePath">源文件</param>/// <param name="targetPath">目标文件</param>public static void CompareJsonFiles(string? sourcePath, string? targetPath){if (!IsExistForJsonFile(sourcePath, targetPath)){return;}// 加载并解析JSON文件var json1 = JToken.Parse(File.ReadAllText(sourcePath));var json2 = JToken.Parse(File.ReadAllText(targetPath));// 标准化JSON结构var normalizedSourceJson = NormalizeJson(json1);var normalizedTargetJson = NormalizeJson(json2);// 比较JSON内容var differences = FindDifferences(normalizedSourceJson, normalizedTargetJson, string.Empty);// 输出差异if (differences.Count == 0){Console.WriteLine("======================== 两个文件内容一致!==============================");}else{Console.WriteLine("============================= 两个文件存在以下差异:=================================");foreach (var diff in differences){Console.WriteLine(diff);}}}/// <summary>/// 监测源文件和目标文件是不是Json文件/// </summary>/// <param name="sourcePath"></param>/// <param name="targetPath"></param>/// <returns></returns>private static bool IsExistForJsonFile(string? sourcePath, string? targetPath){if (string.IsNullOrWhiteSpace(sourcePath)){Console.WriteLine("错误信息:源文件路径不能为空");return false;}if (string.IsNullOrWhiteSpace(targetPath)){Console.WriteLine("错误信息:目标文件路径不能为空");return false;}if (!System.IO.File.Exists(sourcePath)){Console.WriteLine("错误信息:源文件不存在");return false;}if (!System.IO.File.Exists(targetPath)){Console.WriteLine("错误信息:目标文件不存在");return false;}if (Path.GetExtension(sourcePath) != ".json"){Console.WriteLine("错误信息:源文件不是Json文件");return false;}if (Path.GetExtension(targetPath) != ".json"){Console.WriteLine("错误信息:目标文件不是Json文件");return false;}return true;}/// <summary>/// 标准化JSON结构以便比较/// </summary>/// <param name="token"></param>/// <returns></returns>private static JToken NormalizeJson(JToken token){switch (token.Type){case JTokenType.Object:var sortedObject = new JObject();var properties = token.Children<JProperty>().ToList();properties.Sort((x, y) => string.Compare(x.Name, y.Name, StringComparison.Ordinal));foreach (var prop in properties){sortedObject.Add(prop.Name, NormalizeJson(prop.Value));}return sortedObject;case JTokenType.Array:var sortedArray = new JArray(token.Select(NormalizeJson).OrderBy(t => t.ToString()));return sortedArray;default:return token.DeepClone();}}/// <summary>/// 查找两个JSON之间的差异/// </summary>/// <param name="source"></param>/// <param name="target"></param>/// <param name="path"></param>/// <returns></returns>private static List<string> FindDifferences(JToken source, JToken target, string path){var differences = new List<string>();if (source.Type != target.Type){differences.Add($"路径 {path} 类型不同: {source.Type}{target.Type}");return differences;}switch (source.Type){case JTokenType.Object:foreach (var property in ((JObject)source).Properties()){if (!((JObject)target).TryGetValue(property.Name, out JToken? tryTargetValue)){differences.Add($"路径 {path}.{property.Name} 在第二个文件中不存在");continue;}differences.AddRange(FindDifferences(property.Value, tryTargetValue, $"{path}.{property.Name}"));}foreach (var property in ((JObject)target).Properties()){if (!((JObject)source).TryGetValue(property.Name, out _)){differences.Add($"路径 {path}.{property.Name} 在第一个文件中不存在");}}break;case JTokenType.Array:var arraySource = source as JArray;var arrayTarget = target as JArray;for (var i = 0; i < Math.Max(arraySource?.Count ?? 0, arrayTarget?.Count ?? 0); i++){if (i >= arraySource?.Count || i >= arrayTarget?.Count){differences.Add($"路径 {path}[{i}] 数组长度不一致");continue;}differences.AddRange(FindDifferences(arraySource![i], arrayTarget![i], $"{path}[{i}]"));}break;default:if (!JToken.DeepEquals(source, target)){differences.Add($"路径 {path} 值不同: {source}{target}");}break;}return differences;}
}
http://www.yayakq.cn/news/497199/

相关文章:

  • 安卓网站开发视频建e网是干嘛的
  • 网页设计灵感网站网站ftp根目录
  • 建一个网站容易吗邮箱格式
  • 网站开发都需要什么网站源码站
  • 网站搜索优化排名提升学历是什么意思
  • 网站开发什么语言最好游戏网站建设与策划
  • 丘受网站谁做的网球吧304hk 爱站网
  • 建设网站的需求分析报告2016年网站建设方案ppt
  • 在运营中seo是什么意思搜索引擎营销优化
  • 网站服务器速度慢WordPress在线转义
  • 网站首页建设建议天津网站免费制作
  • 南宁网站建设公司企业门户网站建设方案
  • 太原网站建设搭建小城镇建设网站参考文献
  • ps 怎么做网站隆尧建设局网站
  • 梁山网站建设襄阳seo招聘
  • 网站推广团队怎么导入视频到wordpress
  • 为什么多个网站域名有同个网站备案ui设计app界面设计流程
  • wordpress单位内网做网站网站链接安全检测
  • 企业如何加强互联网网站建设浙江省建设信息网站
  • c2c平台排名企业seo年度
  • 网站备案密码丢了怎么办动漫制作专业毕业答辩是什么内容
  • 国贸汽车网站建设收费网站方案
  • 论坛网站开发语言宿迁华夏建设集团网站
  • 南阳网站seo公司软件
  • 什么是网站风格公司大气聚财的名字
  • htm5移动网站开发做网站应该画什么图
  • 网站设计与制作简单吗如何看配色网站
  • icp备案网站要先建好吗软件开发流程详解
  • 北京商城网站建设报价单贵港住房城乡建设厅网站
  • 番禺建网站价格se 网站优化