如何在不包含函数的情况下对对象进行JSON序列化并包括@property属性?

克莱布

有很多与此相关的问题,但没有一个问题能给我确切的答案。

假设我有一个这样的课程:

import json


class MyClass:

    def __init__(self, name, some_type):

        self.name = name
        self.some_type = some_type

    @property
    def prop(self):

        return self.name + self.some_type

    def to_json(self):

        return json.dumps(
            self, default=lambda o: o.__dict__
        )


el1 = MyClass('test', '_to_json')

我现在想获得一个JSON表示,其中包括namesome_typeprop

该函数to_json当前仅返回

{"name": "test", "some_type": "_to_json"}

因此prop缺少(以及中的vars(el1))。

dir返回(以及所有__

'name', 'prop', 'some_type', 'to_json'

我不希望to_json在列表中。

有没有一种直接的方法来更新我的to_json功能,以便它返回

{"name": "test", "some_type": "_to_json", "prop": "test_to_json"}

三亚什

您可以prop__class__.__dict__以下位置找到

import json


class MyClass:

    def __init__(self, name, some_type):

        self.name = name
        self.some_type = some_type

    @property
    def prop(self):

        return self.name + self.some_type

    def to_json(self):
        def get_object_dict(obj):
            d = obj.__dict__.copy()
            for key, value in obj.__class__.__dict__.items():
                if isinstance(value, property):
                    d[key] = getattr(obj, key)
            return d


        return json.dumps(
            self, default=lambda o: get_object_dict(o)
        )


el1 = MyClass('test', '_to_json')
print(el1.to_json())

输出:

{"prop": "test_to_json", "some_type": "_to_json", "name": "test"}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不添加[JsonProperty]属性的情况下序列化JSON.NET中的静态属性

如何在不包含枚举变量名称的情况下序列化枚举?

如何在不丢失“连接”的情况下序列化Atom api对象

如何在不进行序列化的情况下Redis缓存大型C#对象?

如何在对象结构未知的情况下反序列化JSON对象

如何在不连续重复 Javascript 中的两个特定属性的情况下对对象数组进行排序?

如何在属性类型不固定的情况下反序列化json-可以为空字符串或对象,请提出建议。如何处理这种情况?

如何在不面对 AttributeError 的情况下嵌套这些序列化:'BlogPost' 对象没有属性 'review_set'

如何在没有包含元素的情况下序列化“任何”元素的序列

Jackson Databind-如何在不指定目标类的情况下反序列化对象?

如何在不进行序列化的情况下将对象作为输入传递给WorkManager?

使用json.net对对象属性进行条件序列化/反序列化

如何在不丢失任何值的情况下反序列化具有重复键的JSON?

如何在不实际序列化对象的情况下估计Java中对象的序列化大小?

我如何在没有类对象的情况下使用json序列化一个int值?

如何在字符串值包装在同名对象中的情况下彻底反序列化JSON

如何在不使用 File.ReadAllLines 的情况下从 json 文件读取序列化对象?C#

JSON.net:如何在不使用默认构造函数的情况下反序列化?

如何在不转义序列化程序的情况下返回 html 内容?

如何在不使用序列化的情况下制作Java对象的深层副本?

Spring,JSON序列化程序,仅在某些情况下对字段进行序列化

如何在不使用对象的情况下序列化为JSON

如何在不初始化或构造对象的情况下从对象获取属性

如何在不初始化的情况下声明反序列化的类参数数组?

XML序列化-如何在不丢失其XML属性的情况下传递属性数组

如何在不破坏代码风格的情况下使用RestSharp反序列化名为“ value”的属性?

Django:如何在不呈现反斜杠的情况下序列化模型的文本字段

如何使用ObjectMapper在没有默认构造函数的情况下反序列化不可变对象?

如何在子值数组包含某个属性的情况下选择json对象