Protobuf: необработанные двоичные данные в json

Все, что у меня есть, это необработанные двоичные данные protobuf, у меня нет доступа к файлу.proto, и мне нужно преобразовать его в строку json в Java. Так есть ли способ сделать это в Java? то есть нечто похожее на инструмент Protoc

2 ответа

Это невозможно без схемы.proto. По нескольким причинам:

  • необработанный двоичный файл не включает имена полей, только числа; Конечно, вы можете создать JSON с целочисленными свойствами, но:
  • формат данных неоднозначен без схемы:
    • "varint" (простые целые числа) может означать несколько разных вещей в разных контекстах, в том числе со знаком, без знака, с зигзагообразным знаком или логическим значением
    • То же самое для фиксированной длины, которая может быть целыми числами (со знаком или без знака) или с плавающей точкой
    • "префикс длины" может быть строкой utf-8, упакованным массивом или вложенным сообщением

Итак, просто нет хорошего и надежного способа понимания данных без схемы, не говоря уже о выборе способа отображения ее в виде JSON.

.proto Файл - это в основном схема вашего прото буфера.

protoc.exe Инструмент используется для генерации файлов (т.е. используется для создания протобуфера с помощью методов setter и getters.)

да их доступно несколько методов, которые преобразуют protobuffer в JSON как я использую protobuffer в C++, и он предоставляет некоторые методы для преобразования его в JSON.

То же самое будет доступно и на Java. так что не смешивайте protoc концепция инструмента с этим "преобразованием формата данных"

попробуйте использовать этот API, предоставленный Protobuffer официально

https://developers.google.com/protocol-buffers/docs/reference/java/

https://developers.google.com/protocol-buffers/docs/reference/java/

Надеюсь, это поможет

Другие вопросы по тегам