Протобуф для json в python

У меня есть объект, который я де-сериализую, используя protobuf в Python. Когда я печатаю объект, он выглядит как объект python, однако, когда я пытаюсь преобразовать его в json меня есть всевозможные проблемы.

Например, если я использую json.dumps() я получаю, что объект (сгенерированный код из protoc) не содержит ошибку _ dict _.

Если я использую jsonpickle, я получаю UnicodeDecodeError: 'utf8' codec can't decode byte 0x9d in position 97: invalid start byte .

В приведенном ниже тестовом коде используется jsonpickle с ошибкой, показанной выше.

 if len(sys.argv) < 2: print ("Error: missing ser file") sys.exit() else : fileLocation = sys.argv[1] org = BuildOrgObject(fileLocation) org = org.Deserialize() #print (org) jsonObj = jsonpickle.encode(org) print (jsonObj) 

3 Solutions collect form web for “Протобуф для json в python”

Я бы рекомендовал использовать преобразователи protobuf↔json из библиотеки протобуфа google:

 from google.protobuf.json_format import MessageToJson jsonObj = MessageToJson(org) 

Обратитесь к API пакета protobuf: https://developers.google.com/protocol-buffers/docs/reference/python/ (см. Модуль google.protobuf.json_format).

Если вам нужно перейти прямо к json, взгляните на библиотеку protobuf-to-json , но вам придется установить это вручную.

Но я бы рекомендовал использовать библиотеку protobuf-to-dict по нескольким причинам:

  1. Он доступен из pypi, поэтому вы можете просто pip install protobuf-to-dict или включить его в pip install protobuf-to-dict
  2. dict может быть преобразован в json и может быть более полезен, чем строка json

Попробуйте эту библиотеку для преобразования protobuf в json: https://code.google.com/p/protobuf-json/source/browse/trunk/protobuf_json.py

  • Как разбить элементы серии pandas и поместить их в формат JSON?
  • Как исключить определенные поля для сериализации с помощью jsonpickle?
  • Является ли синтаксический разбор json наивным классом Python или структурированным?
  • JSON как строка с unicode для действительного JSON
  • Мониторинг протоколов протоколов JSON
  • Получение значений из JSON с использованием Python
  • Разбор JSON и сохранение данных в классе Python
  • Могу ли я реализовать пользовательский отступ для довольно-типовой печати в модуле JSON Python?
  •  
    Interesting Posts for Van-Lav

    Как заставить редактор PyDev выборочно игнорировать ошибки?

    Сохранение изменений в Django с помощью Nginx?

    Лучший способ конвертировать HTML в открытый текст с помощью Python

    Почему копирование файла по строкам значительно влияет на скорость копирования в Python?

    Как я могу исправить и оптимизировать этот очень простой фрагмент кода «Игры жизни», используя функциональность NumPy?

    python – как проверить, существует ли таблица?

    Наборы Python против списков

    Извлечение необработанных данных из модели PowerPivot с использованием Python

    Какая категория комбинаторных проблем появляется в разделе логических игр LSAT?

    Модуль bz2 Python не компилируется по умолчанию

    Невозможно включить режим отладки в Flask

    Невозможно использовать строку unicode в шаблоне django

    Что такое метод __del__, Как его называть?

    Выполнение нескольких SQL-запросов с помощью MySQLdb

    Почему datetime.datetime.utcnow () не содержит информацию о часовом поясе?

    Python - лучший язык программирования в мире.