Jimmy小站

小明也有大梦想 — 蒋明/铭
当前位置:网站首页 / 未分类 / 正文

python使用josn路径解析获取map中的值

2024-10-10 / 未分类 / 269 次围观 / 0 次吐槽

python定义一个类,并且重写get这个类里边成员的方法
NodeResponse持有一个dict(也就是一个map)
node[“$.path.to.member”]
最终效果:使用josn路径解析获取map中的值

class NodeResponse:
    def __init__(self, ctx_node):
        if not ctx_node:
            return
        if not isinstance(ctx_node, dict):
            raise TypeError("ctx_node must be a dict")
        self.ctx_node = ctx_node
        try:
            self.ctx_node_nowrap = {k: {**v['payload']}
                                    for k, v in ctx_node.items()
                                    if 'payload' in v and isinstance(v['payload'], dict)}
        except Exception as e:
            logger = logging.getLogger()
            logger.error(f"Failed to unwrap ctx_node: {e}")
            self.ctx_node_nowrap = ctx_node

    # override __getitem__ to get attribute from ctx_node
    # ctx_node['key']
    # if attribute not found, return None
    def __getitem__(self, key):
        jsonpath_expr = jsonpath_ng.parse(key)
        match = jsonpath_expr.find(self.ctx_node)
        if not match:
            match = jsonpath_expr.find(self.ctx_node_nowrap)
        if not match:
            return None
        values = [m.value for m in match]
        if '*' in key or len(values) > 1:
            return values
        return values[0]

推荐您阅读更多有关于“python,”的文章

[一个Java程序猿的转型之路,读研深造,专注机器学习推荐算法]
本站所有文章如无特别注明均为原创。作者:吉米酱 ,复制或转载请以超链接形式注明转自 Jimmy小站
原文地址《python使用josn路径解析获取map中的值
额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996