python解析json字符串并返回支持属性访问的对象

来源:互联网 发布:数据库物理设计 编辑:程序博客网 时间:2024/05/16 08:26

需求

将任意一个json字符串,转换为python的object对象,转换后支持使用属性访问

代码

from argparse import Namespaceimport jsondef json_to_object(data):    return json.loads(data, object_hook=lambda d: Namespace(**d))with open("default.json") as f:    args = json_to_object(f.read())

分析

默认情况下,json.loads()返回的是一个dict对象,不支持使用属性访问,因此极为不便

>>> import json>>> s = json.loads('{"name":"rumor","age":25}')>>> s{u'age': 25, u'name': u'rumor'}>>> type(s)<type 'dict'>>>> s.nameTraceback (most recent call last):  File "<stdin>", line 1, in <module>AttributeError: 'dict' object has no attribute 'name'

而json解析命令行使用的argparse,可以任意规定命令行关键字,并能使用属性访问。
查看argparse源码可以看到argparser调用parse_args()后返回的是一个Namespace对象,这里拿来借用一下;
同时,json.loads有个名为object_hook的参数,支持将object进行转换,因此结合起来就有了以上代码。

0 0
原创粉丝点击