gpt4 book ai didi

python 使用属性将自定义对象转换为 json

转载 作者:行者123 更新时间:2023-11-30 23:23:40 24 4
gpt4 key购买 nike

在 Bottle 框架或一般的 python 中,有没有办法使用对象的属性将自定义对象转换为 json?我看到一些帖子建议在自定义类上编写 to_json(self) 类型的方法。想知道是否有任何自动化方法可以执行相同的操作?

来自 Java 世界,希望得到带有 XmlRootElement 注释(或 Python 术语中的装饰器)的 Jackson 类型模块。但目前还没有找到。

更新 我不想使用 __dict__ 元素。相反,想要使用我的自定义类的属性来构建 json。

最佳答案

您可以使用装饰器来“标记”需要表示的属性。您仍然需要编写一个 to_json 函数,但只需要在基类中定义一次

这是一个简单的例子:

import json
import inspect

def viewable(fnc):
'''
Decorator, mark a function as viewable and gather some metadata in the process

'''
def call(*pargs, **kwargs):
return fnc(*pargs, **kwargs)
# Mark the function as viewable
call.is_viewable = True
return call

class BaseJsonable(object):

def to_json(self):
result = {}
for name, member in inspect.getmembers(self):
if getattr(member, 'is_viewable', False):
value = member()
result[name] = getattr(value, 'to_json', value.__str__)()
return json.dumps(result)

class Person(BaseJsonable):

@viewable
def name(self):
return self._name


@viewable
def surname(self):
return self._surname

def __init__(self, name, surname):
self._name = name
self._surname = surname


p = Person('hello', 'world')
print p.to_json()

打印

{"surname": "world", "name": "hello"}

关于python 使用属性将自定义对象转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23835266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com