Набор JSON ↔ Protobuf

Выводите схемы .proto из JSON или кодируйте и декодируйте Protobuf по своей схеме

Пример JSON

До 5 МБ.

Параметры

Имена полей
Дополнительно

Созданный .proto

Схемы пока нет
Вставьте пример JSON или загрузите пример, затем выберите «Создать .proto».

Вставьте пример JSON или загрузите пример, затем выберите «Создать .proto».

Три преобразования по отдельности

JSON → .proto выводит схему proto3 из примера JSON. JSON → Protobuf кодирует сообщение JSON в двоичный вид по вашей схеме .proto и типу сообщения, а Protobuf → JSON декодирует hex, base64 или двоичный файл обратно в JSON. Вывод схемы и настоящее кодирование — разные задачи, поэтому у каждой свой режим.

Как выводится схема

По умолчанию строки становятся string, логические значения — bool, дробные числа — double, а целые — int64, потому что значение, которое сегодня помещается в int32, завтра может не поместиться. Объекты становятся сообщениями с именами в PascalCase по ключам, массивы одного типа — полями repeated, а все объекты массива объединяются, чтобы не потерять необязательные ключи. Значения, где встречается только null, пустые или смешанные, используют google.protobuf.Value и попадают в заметки. Номера полей назначаются в порядке ключей; после развёртывания схемы они входят в двоичный формат и не должны меняться.

Кодирование и декодирование

JSON использует сопоставление ProtoJSON: имена полей в lowerCamelCase, 64-битные целые как строки, bytes в base64, перечисления по именам и особые формы известных типов, таких как Timestamp, Duration, Struct и обёртки. Дополнительные параметры позволяют выводить значения по умолчанию, сохранять имена полей proto, записывать перечисления числами или игнорировать неизвестные поля JSON. При декодировании показываются номера полей, которых нет в выбранном сообщении, — частый признак того, что выбран не тот тип сообщения.

Ограничения и конфиденциальность

Схемы должны быть самодостаточными: известные типы Google (Timestamp, Duration, Struct, Any, Empty, FieldMask и обёртки) встроены, а другие импорты никогда не загружаются из сети. По одному примеру нельзя понять перечисления, словари, признак наличия и планы развития, поэтому проверяйте каждую выведенную схему. Всё работает в вашем браузере; сообщения и схемы не отправляются на сервер.

CodingTool официально запущен на

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch