Опишу примерный алгоритм, а вы попробуйте сами его сделать.
1) Создаем функцию, которая принимает один аргумент - объект.
2) Проходим по корневым свойствам этого объекта в цикле.
3) Делаем проверку, тип текущего значения является null, меняем на пустую строку.
3.1) Если тип является объектом, то передаем этот объект в рекурсию, в эту же функцию, и начинаем с первого шага но уже для этой ветки.
4) возвращаем обработанный объект.
Объект передается по ссылке в рекурсию, поэтому ничего ждать от вызова функции рекурсии не нужно.
UPD: Мне что-то подсказывает, что данный объект вы получили из JSON строки. Так может сразу при парсинге ее обработать?
JSON.parse(data, function (key, value) {return (value == null) ? "" : value})
Тут переданная во втором аргументе функция выполняется для каждой пары ключ-значение, и берет из возвращаемого значения этой функции новое значение.