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

目的

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

方法

json 解析命令行使用的 argparse,可以任意规定命令行关键字,并能使用属性访问。

查看 argparse 源码可以看到 argparser 调用 parse_args() 后返回的是一个 Namespace 对象,这里拿来借用一下;

同时,json.loads 有个名为 object_hook 的参数,支持将 object 进行转换,因此结合起来就有了以下代码。

from argparse import Namespace

import json

def json_to_object(data):

return json.loads(data, object_hook=lambda d: Namespace(**d))

效果

Python 3.6.8rc1 (v3.6.8rc1:cc3e73212a, Dec 11 2018, 17:37:34)

[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

>>> from argparse import Namespace

>>> import json

>>>

>>>

>>> def json_to_object(data):

... return json.loads(data, object_hook=lambda d: Namespace(**d))

...

>>>

>>> json_data = json.dumps({"name": "rumor", "age": 25, "fav": {"fav1": "dog", "fav2": "food"}})

>>>

>>> print(json_to_object(json_data).fav.fav1)

dog

>>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值