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

2023-02-18 10:24:05 浏览数 (1)

目的

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

方法

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

代码语言:javascript复制
from argparse import Namespace
import json


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

效果

代码语言:javascript复制
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
>>>

0 人点赞