Python Dict -> Object

#!/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": "^ ^"
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值