如何有条件地 return 特定值与 JSONPath 中的另一个值?
How to conditionally return specific value with another in JSONPath?
我有一个这样的对象:
{
"content": {
"iteration_size": 1
}
}
我需要一个 JSONPath,如果 next_item
的值恰好为 1,则 returns null
,否则 iteration_size
的值。所以上面应该 return null
和 "iteration_size": 2
应该 return 2. 这在 JSONPath 中可能吗?
我试过 $.content[?(@.iteration_size == 1)].iteration_size
的变体,但我试过的两个在线评估者甚至不同意我几次尝试的结果。
用例是 AWS Batch API,其中 array size 必须是 null
或 2 到 10,000 之间的数字。
AWS Support 建议这是不可能的,我应该改为在 step 函数中使用一个分支。我最终替换了这个:
.next(batch_submit_job)
[…]
有了这个:
.next(
aws_stepfunctions.Choice(self, "check_maybe_array")
.when(
aws_stepfunctions.Condition.number_equals("$.content.iteration_size", 1),
single_batch_submit_job,
)
.otherwise(array_batch_submit_job)
.afterwards()
)
其中只有 array_batch_submit_job
有一个 array_size
。请注意步骤函数的其余部分如何结束 inside 最后一个 next()
调用而不是在顶层。
我有一个这样的对象:
{
"content": {
"iteration_size": 1
}
}
我需要一个 JSONPath,如果 next_item
的值恰好为 1,则 returns null
,否则 iteration_size
的值。所以上面应该 return null
和 "iteration_size": 2
应该 return 2. 这在 JSONPath 中可能吗?
我试过 $.content[?(@.iteration_size == 1)].iteration_size
的变体,但我试过的两个在线评估者甚至不同意我几次尝试的结果。
用例是 AWS Batch API,其中 array size 必须是 null
或 2 到 10,000 之间的数字。
AWS Support 建议这是不可能的,我应该改为在 step 函数中使用一个分支。我最终替换了这个:
.next(batch_submit_job)
[…]
有了这个:
.next(
aws_stepfunctions.Choice(self, "check_maybe_array")
.when(
aws_stepfunctions.Condition.number_equals("$.content.iteration_size", 1),
single_batch_submit_job,
)
.otherwise(array_batch_submit_job)
.afterwards()
)
其中只有 array_batch_submit_job
有一个 array_size
。请注意步骤函数的其余部分如何结束 inside 最后一个 next()
调用而不是在顶层。