Вообще говоря не вижу смысла сравнивать то что на клиенте, а что на сервере
Json от сервера всегда должен иметь приоритет и заменять собой состояние клиента.
Но если прям нужно, то нужно сравнивать в любом случае контент обоих объектов
По крайней мере, сравнить длины обоих объектов через (js) Object.keys(myObject).length;
Если они не равны, то заменять жсон клиента жсоном сервера. Если равны, то проверять контент каждого поля
Для каждого вложенного поля проводить эту же рекурсивную проверку