Protobuf: необработанные двоичные данные в json - PullRequest
0 голосов
/ 11 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

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

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

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

0 голосов
/ 11 декабря 2018
Файл

.proto - это, по сути, схема вашего протобуфера.

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

yes их доступны некоторые методы, которые преобразуют 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/

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

...