gpt4 book ai didi

python - Python Properties类的Json序列化

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:57 25 4
gpt4 key购买 nike

我有一个属性类:

from child_props import ChildProps

class ParentProps(object):
"""Contains all the attributes for CreateOrderRequest"""

def __init__(self):
self.__prop1 = None
self.__child_props = ChildProps()

@property
def prop1(self):
return self.__prop1

@prop1.setter
def prop1(self, value):
self.__prop1 = value

@property
def child_props(self):
return self.__child_props

@child_props.setter
def child_props(self, value):
self.__child_props = value

另一个类是:

class ChildProps(object):
"""Contains all the attributes for CreateOrderRequest"""

def __init__(self):
self.__child_prop1 = None
self.__child_prop2 = None


@property
def child_prop1(self):
return self.__child_prop1

@child_prop1.setter
def child_prop1(self, value):
self.__child_prop1 = value

@property
def child_prop2(self):
return self.__child_prop2

@child_prop2.setter
def child_prop2(self, value):
self.__child_prop2 = value

在 main.py 中

parent_props = ParentProps()
parent_props.prop1 = "Mark"
child_props = ChildProps()
child_props.child_prop1 = 'foo'
child_props.child_prop2 = 'bar'
parent_props.child_props = child_props

如何将 parent_props 序列化为 json 字符串,如下所示:

{
"prop1" : "Mark",
"child_props" : {
"child_prop1" : "foo",
"child_prop2" : "bar"
}
}

PS:json.dumps 只能序列化 native python 数据类型。 pickle 模块仅将对象序列化为字节。

就像我们在 dotnet 中有 NewtonSoft,在 java 中有 jackson,在 Python 中序列化 getter setter 属性类对象的等效序列化器是什么。

我在谷歌上搜索了很多,但没有得到太多帮助。任何线索都会非常可观。谢谢

最佳答案

检查这个:

def serializable_attrs(self):
return (dict(
(i.replace(self.__class__.__name__, '').lstrip("_"), value)
for i, value in self.__dict__.items()
))

它应该返回一个包含您的类属性的字典。

我替换了类名,因为 __dict__ 中的属性看起来像:_ChildProps___child_prop1

关于python - Python Properties类的Json序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49484679/

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