JSON можно втащить куда угодно, это быстро и компактно. Бинарный фарш не всегда обратно даже в рамках одной сборки корректно затягивается. Просто потому что он позволяет сериализовать то, что не нужно сериализовать или что нужно подтягивать иначе, например по id
1. бинарный фарш строго описан
2. библиотеки для протобуфа и мсгпака, и авро есть для всего
3. ты, видимо, не работал с нормальной бинарной сериализацией.
4. json тупо не эффективен, не даёт работать со схемой, привет сериализации дат