标准的python json模块只能将json字符串转换为字典结构。是否有一个python json库可以将json转换为模型对象,类似于google-gson?
但我更愿意将json转换为模型对象与他们的“父子”关系。
我在Android应用中使用google-gson,但不知道哪个python库可以做到这一点。
标准的python json模块只能将json字符串转换为字典结构。是否有一个python json库可以将json转换为模型对象,类似于google-gson?
但我更愿意将json转换为模型对象与他们的“父子”关系。
我在Android应用中使用google-gson,但不知道哪个python库可以做到这一点。
您可以让json模块构建一个字典,然后使用object_hook
到transform the dict into an object,这样的事情:
>>> 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'
>>>
你可以写你自己的序列,使其与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
感谢您的建议,但为了向后兼容的原因,我需要使用JSON。 – 2012-07-21 12:52:09
http://yamltojson.com/ – dg123 2013-09-30 10:13:20
Tt适用于object_hook。谢谢@Bogdan。 – 2012-07-30 07:41:17
模型如何? – 2017-03-18 10:44:29