有没有一个python json库可以将json转换为模型对象,类似于google gson?

2024-05-19 09:15:24 发布

您现在位置:Python中文网/ 问答频道 /正文

标准的python json模块只能将json字符串转换为dict结构。

但我更喜欢将json转换为具有“父子”关系的模型对象结构。

我在Android应用程序中使用google gson,但不知道哪个python库可以做到这一点。


Tags: 模块对象字符串模型json应用程序标准关系
3条回答

可以让json模块构造dict,然后使用^{}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一起工作,但为什么不使用支持它的现成的^{}

>>> 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

在2018年,可以使用cattrs,使用attrsmypy的静态类型

相关问题 更多 >

    热门问题