3

我想将 Python 对象转换为 JSON,我正在使用成员函数来执行此操作,例如

def to_json(self):
    return json.dumps(self.__dict__)

问题是我有成员 _name 和属性名称

@property
def name(self):
    return self._name
@name.setter
def name(self, value):
   self._name = some_validation_ove_name(value)

结果 JSON 我得到了带有密钥的数据,_name但我想成为name. 如果没有手动创建 JSON 这可能吗?

4

2 回答 2

2

可能的。当然。什么是最好的方法是更好的问题。在此示例中这应该对您有用,但如果您有其他情况,则可能不是理想的解决方案:

def to_json(self):
    return json.dumps({k.strip('_'): v for k, v in self.__dict__.items()})

例子

import json

class Foo(object):

    def __init__(self):
        self.foo = "foo"
        self.__bar__ = "__bar__"
        self.baz = "_baz"

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

    @name.setter
    def name(self, value):
        self._name = value

    def to_json(self):
        return json.dumps({k.strip('_'): v for k, v in self.__dict__.items()})

foo = Foo()
foo.name = "name"
print foo.to_json()

输出

{"baz": "_baz", "foo": "foo", "bar": "__bar__", "name": "name"}
于 2012-12-25T05:38:50.177 回答
1

您可以使用您想要的名称创建一个字典并将其编码为 JSON

于 2012-12-25T05:40:57.847 回答