Крч я делал так
Прилетает говноданные, с пробелами в начале и в конце и другой кучей говна.
Во-первых я запилил кучу утилит, чтобы, если работать с такими данными то почти так же, как и с обычными, а порой и проще.
Во-вторых, утилк мало поэтому я запилил обёртки юзая композицию.
Синтетический пример
Response Dto {
Response originalResponse
//Делегаты на оригинальный респонс
}
Если в респонсе есть другие вложенные объекты то так же создавал обёртку и в 1 обёртке возвращал уже обёртку, а не оригинальные данные.
Таким образом, я полностью контролировал, как свой апи, так и чужой. И в случае изменений последнего я всегда мог адаптировать код внутри обёртки, зачастую не меняя код зависимый от обёртки