Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2013 12:06:05

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

привет.

нарукоблудил такой вод код:

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, но совершенно немогу вкурить, как поступить в данном случае..

спасибо.



Офлайн

#2 Янв. 30, 2013 15:02:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

сериализация объекта в json

Офлайн

#3 Янв. 30, 2013 19:35:55

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

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

так тоже пробовал: http://liveworkspace.org/code/42uzgR$13



Отредактировано pupkin2 (Янв. 30, 2013 19:38:27)

Офлайн

#4 Янв. 30, 2013 22:14:57

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

сериализация объекта в json

Офлайн

#5 Янв. 31, 2013 11:01:29

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

сериализация объекта в json

Может быть таки возьмете http://pypi.python.org/pypi/jsonpickle
И не будете изобретать велосипед?



Офлайн

#6 Янв. 31, 2013 11:53:09

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

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

я-то думал, что в пайтоне уж точно нет проблем с сериализацией. но оказывается и тут какие-то костыли городить приходится..



Офлайн

#7 Янв. 31, 2013 11:54:46

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

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



Офлайн

#8 Янв. 31, 2013 12:47:04

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

сериализация объекта в json

pupkin2
я-то думал, что в пайтоне уж точно нет проблем с сериализацией. н

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

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



Офлайн

#9 Янв. 31, 2013 12:55:47

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

разобраться в документации
я эту доку несколько раз перечитал.

ладно, буду пробовать…



Офлайн

#10 Янв. 31, 2013 13:02:25

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

сериализация объекта в json

ваш код был совершенно не верен
уточните пожалуйста, что в коде совершенно не верно, и как должно быть верно?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version