Python сериализуемые объекты json

Одна проблема может относиться к пользовательским маршрутизаторам, усекающим поля формы. Путь вокруг этого состоит в том, чтобы установить MaxPageStateFieldLength на небольшое количество (как 100) в web.config, и ViewState разбит в маленькие блоки. Очень просто сделать, и , эта статья объясняет это полностью.

30
задан 22 September 2009 в 06:37
поделиться

2 ответа

Напишите свой собственный кодировщик и декодер, который может быть очень простым, например return __dict __

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

import json

class Tree(object):
    def __init__(self, name, childTrees=None):
        self.name = name
        if childTrees is None:
            childTrees = []
        self.childTrees = childTrees

class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        if not isinstance(obj, Tree):
            return super(MyEncoder, self).default(obj)

        return obj.__dict__

c1 = Tree("c1")
c2 = Tree("c2") 
t = Tree("t",[c1,c2])

print json.dumps(t, cls=MyEncoder)

он печатает

{"childTrees": [{"childTrees": [], "name": "c1"}, {"childTrees": [], "name": "c2"}], "name": "t"}

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

49
ответ дан 27 November 2019 в 23:23
поделиться

Косвенный ответ: вместо использования JSON вы можете использовать YAML , что позволяет без проблем делать то, что вы хотите. (JSON по сути является подмножеством YAML.)

Пример:

import yaml
o1 = gwebpage("url")
o2 = gpagelet(o1)
o1.gpagelets = [o2]
print yaml.dump(o1)

Фактически, YAML прекрасно обрабатывает циклические ссылки за вас.

5
ответ дан 27 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: