1

我正在尝试对作为数组一部分的输入和结果字段应用屏蔽。并且数组的大小是动态的。根据文档,指示提供绝对数组索引,这在此用例中是不可能的。我们有其他选择吗?

例如。如果需要从输入文档中屏蔽所有学生的年龄字段?

输入:

"students" : [
  {
    "name": "Student 1",
    "major": "Math",
    "age": "18"
  },
  {
    "name": "Student 2",
    "major": "Science",
    "age": "20"
  },
  {
    "name": "Student 3",
    "major": "Entrepreneurship",
    "age": "25"
  }
]
4

1 回答 1

2

如果您只想生成input从 中删除了一个字段(或一组字段)的副本input,您可以使用json.remove. 诀窍是使用推导来计算要删除的路径列表。例如:

paths_to_remove := [sprintf("/students/%v/age", [x]) | some x; input.students[x]]
result := json.remove(input, paths_to_remove)

如果您尝试使用决策日志屏蔽input功能从决策日志中的文档中屏蔽字段,那么您将编写如下内容:

package system.log

mask[x] {
    some i
    input.input.students[i]
    x := sprintf("/input/students/%v/age", [i])
}
于 2021-09-20T21:41:25.933 回答