#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
__author__ = 'Scholar'
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
class parseObject():
@staticmethod
def parseDict(d):
top = parseObject()
seqs = tuple, list, set, frozenset
for i, j in d.items():
if isinstance(j, dict):
setattr(top, i, parseObject.parseDict(j))
elif isinstance(j, seqs):
setattr(top, i,
type(j)(parseObject.parseDict(sj) if isinstance(sj, dict) else sj for sj in j))
else:
setattr(top, i, j)
top.dict = d
return top
def __str__(self):
return json.dumps(self.dict, sort_keys=True, ensure_ascii=False, indent=2)
@staticmethod
def parseStr(str):
j = json.loads(str)
p = parseObject.parseDict(j)
return p
测试:
>>> from parseObject import parseObject
>>> jsonStr = '{"a":"hello","b":"world","c":{"d":"Scholar","e":"^ ^"}}'
>>> obj = parseObject.parseStr(jsonStr)
>>> obj.a
u'hello'
>>> obj.b
u'world'
>>> obj.c
<MomoFramework.utillity.parseObject.parseObject instance at 0x108672f38>
>>> obj.c.d
u'Scholar'
>>> obj.c.e
u'^ ^'
>>> print obj
{
"a": "hello",
"b": "world",
"c": {
"d": "Scholar",
"e": "^ ^"
}
}