回到顶部

CONTENTS

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
>>>


 

^_^
请喝咖啡 ×

前一篇: 软件质量模型的 6 大特性 27 个子特性
下一篇: django inclusion_tag 包含标签