Я хочу выбрать объекты из строки JSON путем фильтрации с использованием выражения JSONPath с другим выражением, встроенным в фильтр. Другими словами, я хочу фильтровать значение, которое присутствует в других местах в данных JSON.Как я могу использовать выражение JSONPath как фильтр внутри другого выражения JSONPath?
Например:
В следующих данных JSON имеется значение в $.Item.State.stepId
(в настоящее время "QG2.0"). Мне нужно иметь выражение JSONPath, который выбирает значения на основе этого значения, как это:
$..Step[?(@.stepId==$Item.State.stepId)].actionDate
Но это не будет возвращать результаты. Если я использую строку («QG2.0») следующим образом:
$..Step[?(@.stepId=='QG2.0')].actionDate
оно вернет необходимые данные.
Что случилось, или это даже не возможно? Мой JSON ниже:
{
"Item": {
"Common": {
"folio": "PSH-000016020",
"setName": "123-XZ200-1",
"wfId": "Kat1_002",
"wfIssue": "002",
"wfIdIssue": "Kat1_002.002"
},
"State": {
"status": "IN WORK",
"stepId": "QG2.0",
"stepDescription": "Validation"
},
"Participants": {
"Participant": [
{
"role": "PR",
"roleDescription": "Product Responsible",
"loginName": "marc102",
"email": "[email protected]"
}, {
"role": "CR",
"roleDescription": "Chapter Responsible",
"loginName": "uli26819",
"email": "[email protected]"
}
]
},
"Steps": {
"Step": [
{
"stepId": "QG1.0",
"stepTitle": "Preparation",
"actionDate": "2016-06-28T10:28:09",
"actionDueDate": "",
"actionBy_Name": "Marc",
"actionBy_Account": "marc102",
"action": "complete",
"Comment": ""
}, {
"stepId": "QG2.0",
"stepTitle": "Check Requirements",
"actionDate": "2016-08-08T14:17:04",
"actionDueDate": "",
"actionBy_Name": "Uli",
"actionBy_Account": "uli26819",
"action": "complete",
"Comment": ""
}
]
}
}
}
Привет Брайан, спасибо за ответ. Я подумал об этом, но надеялся, что будет прямое решение. –
Ну, Json.Net - это [с открытым исходным кодом] (https://github.com/JamesNK/Newtonsoft.Json) в конце концов; вы всегда можете реализовать эту функцию самостоятельно, если вы чувствуете амбициозность. –