我需要将以下JSONPath查询组合成一个查询
mapping_id = 1.1
jsonpath_expression = parse(f'HEADERS[*].SUB_HEADERS[?(@.HEADER_ID=={mapping_id}) & (@.HEADER_IXML_PARAID != "")].HEADER_IXML_PARAID, SECTION_TEXT_PARAID_LIST')
jsonpath_expression = parse(f'HEADERS[?(@.HEADER_ID=={mapping_id}) & (@.HEADER_IXML_PARAID != "")].HEADER_IXML_PARAID, SECTION_TEXT_PARAID_LIST')
以下是我需要从中获取信息的JSON格式:
{
"HEADERS": [
{
"HEADER_ID": 1,
"HEADER_NAME": "HEADING 1 TEXT",
"HEADER_IXML_PARAID": "116BACE8",
"SECTION_TEXT_PARAID_LIST": [],
"SUB_HEADERS": [
{
"HEADER_ID": 1.1,
"HEADER_NAME": "Therapeutic indications",
"HEADER_IXML_PARAID": "0A863DE3",
"SECTION_TEXT_PARAID_LIST": [
"4E01355B",
"132F90DD"
],
"SUB_HEADERS": []
}],
},
{
"HEADER_ID": 2,
"HEADER_NAME": "HEADING 2 TEXT",
"HEADER_IXML_PARAID": "116BACE8",
"SECTION_TEXT_PARAID_LIST": [],
"SUB_HEADERS": []
}
]
}
现在,这是我正在使用的方法,但我更愿意将两者结合起来
from jsonpath_ng.ext import parse
jsonpath_expression = parse(f'HEADERS[?(@.HEADER_ID=={mapping_id}) & (@.HEADER_IXML_PARAID != "")].HEADER_IXML_PARAID, SECTION_TEXT_PARAID_LIST')
match = jsonpath_expression.find(self.tagged_sections)
if not match:
jsonpath_expression = parse(f'HEADERS[*].SUB_HEADERS[?(@.HEADER_ID=={mapping_id}) &
(@.HEADER_IXML_PARAID != "")].HEADER_IXML_PARAID, SECTION_TEXT_PARAID_LIST')
match = jsonpath_expression.find(self.tagged_sections)
我不确定您正在使用哪个库,但许多实现都支持逗号分隔键:
['foo','bar']
。您可以将其与递归下降运算符一起使用:..
您还有一些被认为是非标准的语法,尽管您的库可能支持这些语法。我会把它改成
最后一件事是我想象中您所要求的:组合过滤器表达式
请注意,这只会选择
HEADER_IXML_PARAID
和SECTION_TEXT_PARAID_LIST
并返回集合中的所有值;它不能确保它们之间保持联系相关问题 更多 >
编程相关推荐