Один из способов добиться этого - получить имена / пути всех ключей в json и сравнить список. Например,
var path1 = GetAllPaths(json1).OrderBy(x=>x).ToList();
var path2 = GetAllPaths(json2).OrderBy(x=>x).ToList();
var result = path1.SequenceEqual(path2);
Где GetAllPaths определяется как
private IEnumerable<string> GetAllPaths(string json)
{
var regex = new Regex(@"\[\d*\].",RegexOptions.Compiled);
return JObject.Parse(json).DescendantsAndSelf()
.OfType<JProperty>()
.Where(jp => jp.Value is JValue)
.Select(jp => regex.Replace(jp.Path,".")).Distinct();
}
Пример демонстрации