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 に答える