You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JMESPath获取JSON中_ISSUE_CURRENCY值并校验属性存在性

正确实现方案

问题原因

你原有代码取值失败的核心原因:

  • JMESPath查询路径未指向最终目标字段,validatedAsset.assetName返回的结果本身就是包含_ISSUE_CURRENCY的字典对象,你没有继续向下取目标属性
  • 缺少明确的属性存在性判断逻辑,裸except捕获异常会掩盖真实错误,也无法精准判断字段是否存在

方案1:原生Python字典校验取值(无额外依赖,逻辑可控)

import json
import jmespath

# 原有文件读取加载逻辑
f_asset = open(f"{tempdir}\\cdwassets_all.csv", encoding="utf-8").read().replace("\n", "")
json_obj_asset = json.loads(f_asset, strict=False)

issue_cur = ""
# 先获取上层对象
asset_info = jmespath.search("validatedAsset.assetName", doc)
# 先判断上层对象是否合法,再判断目标属性是否存在
if isinstance(asset_info, dict) and "_ISSUE_CURRENCY" in asset_info:
    issue_cur = asset_info["_ISSUE_CURRENCY"]

print(issue_cur)
# 输出结果:EUR

方案2:JMESPath直接查询(代码更简洁)

JMESPath路径查询如果目标字段不存在会自动返回None,不需要手动判断Key是否存在:

import jmespath

# 直接把目标字段拼到查询路径末尾
query_res = jmespath.search("validatedAsset.assetName._ISSUE_CURRENCY", doc)
# 不存在则赋值为空字符串
issue_cur = query_res if query_res is not None else ""

print(issue_cur)
# 输出结果:EUR

注意:不建议使用无指定异常类型的裸except写法,会吞掉JSON格式错误、路径不存在等非预期异常,增加排查难度。

内容的提问来源于stack exchange,提问作者Bruno Lorena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:24:24