0

我正在使用 go rego 包,编组时的 rego.ResultSet 给出了这个:

[
  {
    "expressions": [
      {
        "value": {...},
        "text": "data",
        "location": { "row": 1, "col": 1 }
      }
    ]
  }
]

我打算在输入 JSON 中输出导致失败的键的位置,以便我可以在构建错误的上下文中使用它 我们之前使用 JSON 模式来验证 JSON,它用于从输入中返回键可以映射错误。https://www.jsonschemavalidator.net/

我想因为 rego 可以支持更复杂的决策,其中不止一个键将负责产生最终结果,这可能是它不会指向失败上下文输入中的位置的原因。除非我错过了什么?

4

1 回答 1

2

回答第一个问题:

OPA 解析的每个值都保留了“位置”信息,用于标识它在源字符串/文件中的来源。ResultSet 中的位置是创建对象时传递的查询中表达式的位置。rego.Rego

在您的情况下,查询是"data",即您引用了 OPA 中的所有文档(可能已从外部加载的基础文档以及您加载到 OPA 中的任何规则生成的虚拟文档。)表达式的位置在这种情况下不是很有趣:第 1 行,第 1 列。

回答你的第二个问题:

OPA 目前没有可靠的方法来返回输入中 JSON 值的位置,但这是很有价值的东西,将来可能会添加。

于 2020-04-28T12:42:05.990 回答