如何将json转换为python类?

时间:2013-11-20 09:18:29

标签: python json

我想要Json到Python类。

例如

{'channel':{'lastBuild':'2013-11-12', 'component':['test1', 'test2']}}

self.channel.component[0] => 'test1'
self.channel.lastBuild    => '2013-11-12'
你知道json转换的python库吗?

2 个答案:

答案 0 :(得分:15)

在json模块的加载函数中使用object_hook特殊参数:

import json

class JSONObject:
  def __init__( self, dict ):
      vars(self).update( dict )

#this is valid json string
data='{"channel":{"lastBuild":"2013-11-12", "component":["test1", "test2"]}}'

jsonobject = json.loads( data, object_hook= JSONObject)

print( jsonobject.channel.component[0]  )
print( jsonobject.channel.lastBuild  )

这个方法有一些问题,比如python中的一些名字是保留的。您可以在__init__方法中过滤掉它们。

答案 1 :(得分:1)

json模块会将Json加载到地图/列表列表中。 e.g:

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]

请参阅http://docs.python.org/2/library/json.html

如果要反序列化为Class实例,请参阅此SO线程:Parse JSON and store data in Python Class