Протобуф для 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_normalize для вложенных Json с массивами
  • scrapy от выхода скрипта в json
  • Ошибка Json.dump с 'должен быть unicode, а не str' TypeError
  • Как сериализовать в JSON список объектов модели в django / python
  • Как получить POSTed json в Flask?
  • Python: проверка и форматирование файлов JSON
  • python, записывая Json в файл
  • Как получить JSON с веб-страницы в скрипт Python
  • Python для JSON Serialization не работает в Decimal
  • Как сериализовать / десериализовать Pandas DataFrame в и из ProtoBuf / Gzip в приложении RESTful Flask?
  •  
    Interesting Posts for Van-Lav

    Sumbline Text 2, Eclipse все действующие, IndentationError

    numpy: трансляция трансляции по одной общей оси из двух 2d-массивов

    Как использовать login_required в режиме просмотра django

    Причина, почему numpy rollaxis настолько запутанна?

    Как обрабатывать конфиденциальную конфигурационную информацию при развертывании приложений для приложений?

    mrdivide в MATLAB: что он делает, и как я могу это сделать в Python?

    Как увеличить длину списка списков Python

    Как найти точки пересечения прямой и нескольких кривых в Python?

    Каковы имена магических методов для операторов «есть» и «in»?

    python matplotlib заполнены ящиками

    Gstreamer проблемы gst.LinkError python

    Эффективный способ использования функции Логарифма в разреженной матрице

    Как я могу использовать Facebook Connect с Google App Engine без использования Django?

    Подглядывание в куче в python

    Текстовый виджет Python Tkinter с автоматическим и пользовательским прокруткой

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