Ответ 1
Json
- доступно для чтения/редактирования
- может быть проанализирован, не зная схему заранее
- отличная поддержка браузера.
- менее подробный, чем XML
XML
- доступно для чтения/редактирования
- может быть проанализирован, не зная схему заранее
- для SOAP и т.д.
- хорошая поддержка инструмента (xsd, xslt, sax, dom и т.д.)
- довольно многословный
Protobuf
- очень плотные данные (малый выход)
- трудно прочно декодировать, не зная схемы (формат данных является внутренне неоднозначным и требует уточнения схемы)
- очень быстрая обработка
- не предназначен для глаз человека (плотный двоичный)
У всех есть хорошая поддержка на большинстве платформ.
Лично я редко использую XML в эти дни. Если потребитель является браузером или публичным API, я использую json. Для внутренних API я использую protobuf для производительности. Предлагая как публичный API (либо через заголовки, либо отдельные конечные точки), тоже хорошо работает.