Найти - Пользователи
Полная версия: сериализация объекта в json
Начало » Python для новичков » сериализация объекта в json
1 2
pupkin2
привет.

нарукоблудил такой вод код:
import json
class toolchain(json.JSONEncoder):
   def __init__(self, id_, version_, description_, options_avail_, options_):
      self.id = id_
      self.version = version_
      self.description = description_
      self.options_avail = options_avail_
      self.options = options_
   def default(self, obj):
      return obj
t = toolchain(4, "4.6.3", "GCC-4.6.3", "yes", "-O2 -Wall")
json.dumps(t)
http://liveworkspace.org/code/42uzgR

и не могу понять, чего оно от меня кочет %)
доку прочел, но понятней не стало. нет, я понял как сериализовать complex, но совершенно немогу вкурить, как поступить в данном случае..

спасибо.
FishHook
http://liveworkspace.org/code/42uzgR$11
pupkin2
FishHook, спасибо, проблему это решает.
но скажите, насколько это правильный способ? дело в том, что я создал массив из двух объектов типа toolchain, и теперь получаю ошибку при попытке сереализовать его: http://liveworkspace.org/code/42uzgR$12

так тоже пробовал: http://liveworkspace.org/code/42uzgR$13
o7412369815963
Нужно что-то типа этого: http://liveworkspace.org/code/42uzgR$14
cutwater
Может быть таки возьмете http://pypi.python.org/pypi/jsonpickle
И не будете изобретать велосипед?
pupkin2
o7412369815963
Нужно что-то типа этого: http://liveworkspace.org/code/42uzgR$14
оно-то работает, но какова правильность такого решения? с какими проблемами мне еще предстоит столкнуться?

я-то думал, что в пайтоне уж точно нет проблем с сериализацией. но оказывается и тут какие-то костыли городить приходится..
pupkin2
cutwater
Может быть таки возьмете http://pypi.python.org/pypi/jsonpickleИ не будете изобретать велосипед?
сейчас почитаю…
но уже расстраивает то, что это сторонняя либа %)
cutwater
pupkin2
я-то думал, что в пайтоне уж точно нет проблем с сериализацией. н

Проблем-то нет, если понимать что и как работает и какой инструмент за что отвечает.
Собственно полноценная сериализация объектов в Python называется pickle и сериализует/десериализует в бинарный формат.

Встроенный модуль json работает только с примитивными типами и контейнерами, так как генерирует переносимый json. Поддержку всех остальных типов можно реализовать отдельно, собственно написав свой класс, унаследованый от JSONEncoder. Что вы и пытались проделать, однако ваш код был совершенно не верен. И тут есть два варианта: разобраться в документации и написать конкретное решение или использовать более универсальную библиотеку.
pupkin2
разобраться в документации
я эту доку несколько раз перечитал.

ладно, буду пробовать…
pupkin2
ваш код был совершенно не верен
уточните пожалуйста, что в коде совершенно не верно, и как должно быть верно?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB