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/
Надеюсь, это поможет