Правильно ли я понял принцип одной обязанности в классе?
Мне кажется что основной задачей класса является предоставление методов для работы со значениями заголовков

Вам не должно казаться, класс создаётся для решения конкретной задачи, и разработчик должен понимать а не догадываться.

Меня очень волнует именно вопрос следования этому принципу

Прям-таки «очень»? Эта, извините за мой французский, херня Вас волнует?

Если по сути вопроса — то ответ «да», для следования указанному принципу нужно сериализацию выводить за пределы класса.
Если же следовать другому принципу , то сериализацию следует рассматривать как вспомогательную функцию для решения основной задачи, потому выносить не нужно.
ru.wikipedia.org/wiki/Принцип_единственной_обязанности