Попытка использовать два оператора && в запросе jsonpath, но я не могу получить логику, которую я хочу выполнить
public List<Step> GetBuildSteps()
{
var rule1 = "Npm@1";
var rule2 = "npm build";
var rule3 = "Npm@0";
var rule4 = "Build";
var queryString = string.Format("$..steps[?(@.task == '{0}' &&
@.displayName =~ /^.*{1}.*$/ || @.task == '{2}' && @.displayName =~
/^.*{3}.*$/) ]", rule1, rule2, rule3, rule4);
return queryJson(queryString);
}
private List<Step> queryJson(String queryString)
{
var values = json.SelectTokens(queryString).ToList();
Console.WriteLine(queryString);
Console.WriteLine(JsonConvert.SerializeObject(values,
Formatting.Indented));
return
JsonConvert.DeserializeObject<List<Step>
(JsonConvert.SerializeObject(values, Formatting.Indented));
}
Вот мой пример JSON:
{
"steps":[
{
"task":"Npm@1",
"displayName":"Dev - npm build",
"inputs":{
"filename":"tsc",
"arguments":"-p $(build.sourcesDirectory)\\SelfServeAdminExtn"
},
"enabled":"false",
"continueOnError":"true"
},
{
"task":"Npm@1",
"displayName":"Install Packages",
"inputs":{
"filename":"tfx"
},
"enabled":"false",
"condition":"succeededOrFailed()"
},
{
"task":"Npm@0",
"displayName":"Preprod - Build",
"inputs":{
"filename":"copy",
"arguments":"$(build.sourcesDirectory)\\ config.ts / y"
}
}
]
}
Я ожидаю, что оператор? (Условие1 && условие2 || условие3 && условие4) будет работать, но это не так. Это работает только тогда, когда я это делаю? (Условие1 && условие2), но когда я объединяюсь с условием 3 и условием 4, я получаю пустой список.