using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using JsonDiffPatchDotNet;
public static void Main()
Console.WriteLine("Hello World");
var left = JToken.Parse(Minify(source));
var right = JToken.Parse(Minify(edited));
var jdp = new JsonDiffPatch();
var diff1 = jdp.Diff(left, right);
var diff2 = JsonDifferentiator.Differentiate(right, left, OutputMode.Symbol, showOriginalValues: true);
Console.WriteLine("--------------------------------------");
Console.WriteLine("----------diff using JsonDiffer-------");
Console.WriteLine("--------------------------------------");
Console.WriteLine(diff1);
Console.WriteLine("***************************************");
Console.WriteLine("***************************************\n\n");
Console.WriteLine("--------------------------------------");
Console.WriteLine("----diff using JsonDiffPatchDotNet----");
Console.WriteLine("--------------------------------------");
Console.WriteLine(diff2);
Console.WriteLine("***************************************");
Console.WriteLine("***************************************\n\n");
if (diff2 != null && diff1 != null)
var Diff1PatchOutput = jdp.Patch(right, diff1).ToString();
var formatedDiff = JToken.Parse(diff2.ToString().Replace("*", ""));
var Diff2PatchOutput = jdp.Patch(right, formatedDiff).ToString();
Console.WriteLine("--------------------------------------");
Console.WriteLine("---------- patch using diff2 --------");
Console.WriteLine("--------------------------------------");
Console.WriteLine(Diff1PatchOutput);
Console.WriteLine("***************************************");
Console.WriteLine("***************************************\n\n");
Console.WriteLine("--------------------------------------");
Console.WriteLine("---------- patch using diff2 --------");
Console.WriteLine("--------------------------------------");
Console.WriteLine(Diff2PatchOutput);
Console.WriteLine("***************************************");
Console.WriteLine("***************************************\n\n");
Console.WriteLine("Diff failed or Invalid json inputs left and rigth !");
public static string Minify(string json)
return Regex.Replace(json, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1");
public static string source = @"
""TYPE"": ""DIAGNOSTICS"",
""TYPE"": ""ORGANISATION"",
public static string edited = @"
""TYPE"": ""DIAGNOSTICS zzz"",
""TYPE"": ""ORGANISATION zzz"",