使用JMESPath对JSON做部分字符串匹配过滤提取符合条件的教师信息
正确JMESPath查询方案
原查询错误点
- 函数调用语法错误:JMESPath内置
contains函数需使用前置调用格式contains(源字符串, 匹配子串),原写法使用属性链式调用不符合语法规范,无法触发筛选逻辑。 - 输出字段范围不符合要求:原查询末尾指定提取
TeacherType."#text",仅输出了单个属性值,未保留Teacher节点的全部字段和@id属性。 - 未处理空值场景:符合筛选条件的学校可能不存在
Teacher字段(如示例中的ABC_4),需要额外排除空值避免输出无效null。
正确查询语句
School[?contains(SchoolType."#text", "OTHER")].Teacher[] | [?@ != null]
输出结果
使用示例JSON执行上述查询后,输出如下,完整保留Teacher所有字段及@id属性:
[ { "@id": "XYZ_1", "TeacherType": { "@tc": "5", "#text": "GENDER" }, "Gender": "FEMALE", "Extension": { "@VC": "23", "Extension_Teacher": { "DateDuration": { "@tc": "10023111", "#text": "0-6 MONTHS" } } } }, { "@id": "XYZ_2", "TeacherType": { "@tc": "23", "#text": "EDUCATED" }, "Extension": { "@VC": "23", "Extension_Teacher": { "DateDuration": { "@tc": "10023111", "#text": "CURRENT" } } } } ]
内容的提问来源于stack exchange,提问作者Debbie
相关产品推荐
相关产品推荐

