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,”的文章
- 上一篇:凝汽器化学清洗(高压水射流清洗)
- 下一篇:python脚本执行
Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996
额 本文暂时没人评论 来添加一个吧
发表评论