9

標準の python json モジュールは、json 文字列を dict 構造にのみ変換できます。

しかし、私はjsonを「親子」関係を持つモデルオブジェクト構造に変換することを好みます。

Android アプリで google-gson を使用していますが、どの python ライブラリでこれを実行できるかわかりません。

4

3 に答える 3

8

jsonモジュールにdictを作成させてから、を使用してdictをオブジェクトobject_hook変換することができます。

>>> import json
>>>
>>> class Person(object):
...     firstName = ""
...     lastName = ""
...
>>>
>>> def as_person(d):
...     p = Person()
...     p.__dict__.update(d)
...     return p
...
>>>
>>> s = '{ "firstName" : "John", "lastName" : "Smith" }'
>>> o = json.loads(s, object_hook=as_person)
>>>
>>> type(o)
<class '__main__.Person'>
>>>
>>> o.firstName
u'John'
>>>
>>> o.lastName
u'Smith'
>>>
于 2012-07-22T08:31:26.680 に答える
1

独自のシリアライザーを作成してjsonで動作させることもできますが、そのまま使用できるシリアライザーを使用pyyamlしてみませんか。

>>> import yaml
>>> class Foo:
...    def bar(self):
...       print 'Hello I am bar'
...    def zoo(self,i):
...       self.i = i
...       print "Eye is ",i
... 
>>> f = Foo()
>>> f.zoo(2)
Eye is  2
>>> s = yaml.dump(f)
>>> f2 = yaml.load(s)
>>> f2.zoo(3)
Eye is  3
>>> s
'!!python/object:__main__.Foo {i: 2}\n'
>>> f2 = yaml.load(s)
>>> f2.i
2
于 2012-07-21T07:42:34.753 に答える
0

2018年には、 attrsmypyで静的型付けを利用して、 cattrsで実行できます

于 2018-04-20T12:06:27.723 に答える