2017-02-23 3 views
1

Я хотел бы знать, существует ли какой-то стандарт, который определяет двоичные форматы с использованием JSON в качестве описывающего языка, аналогичного буферам протокола Google.Есть ли стандарт для указания двоичного формата в json

Буферы протокола кажутся очень мощными, но для их анализа требуется еще один язык и значительные накладные расходы, особенно для скомпилированных языков, таких как C++.

Так что мне интересно, есть ли принятый стандарт, который использует JSON для описания двоичного формата. (При анализе двоичных данных могут потребоваться некоторые ручные шаги, но по крайней мере можно получить ясное и уникальное описание данных.)

Чтобы быть ясным, я не говорю о кодировании двоичных данных в JSON, I Я говорю об описании двоичных данных в JSON.

+0

«Многочисленные накладные расходы, особенно для скомпилированных языков». Какие накладные расходы? Парсер PB создает исходный код для отражения текущего описания PB. Вам не нужно запускать парсер PB с каждой компиляцией вашего проекта. Как JSON-описание улучшит его? В любом случае вам придется разбираться. –

+1

С накладными расходами я также подразумеваю «накладные расходы для программиста». В самом деле, для этого не требуется никакого синтаксического анализа, который является большим профи. Я действительно впечатлен буферами протокола. Однако я также ищу что-то более легкое, потому что наши двоичные данные довольно ограничены по сложности и потому, что наши программисты немного консервативны, поэтому я сомневаюсь, что буферы протокола получат теплый прием. –

+0

Хорошо, что имеет смысл. Вы должны были сразу объяснить накладные расходы. Задавать хорошие вопросы по SO занимает практика :) –

ответ

0

Обратитесь к конечной Wikipedia listing и оцените сами. Я не знаю, что является правильным аргументом для преодоления инерции вашего программиста. Я бы счел Apache Avro наиболее подходящим вашим требованием - у него есть описание JSON.

Для наименьшего трения вы можете попробовать MessagePack или BSON, которые являются JSON сами, только лучше упакованы. Но, не имея внешней декларации, нужно быть самоописательным, поэтому необходимо переносить имена полей на провод - поэтому он не является «двоичным» и компактным как протокольные буферы или Avro.

Смежные вопросы