Open policy agent 什么';opa rego resultset表达式中的'location'键是什么?我可以在输入json中获取导致策略冲突的位置吗?

Open policy agent 什么';opa rego resultset表达式中的'location'键是什么?我可以在输入json中获取导致策略冲突的位置吗?,open-policy-agent,rego,Open Policy Agent,Rego,我使用的是go rego包,封送时的rego.ResultSet给出了以下内容: [ { "expressions": [ { "value": {...}, "text": "data", "location": { "row": 1, "col": 1 } } ] } ] 我打算在输入JSON中输出键负责失败的位置,以便在构建错误上下文时使用它 我们在前面使用JSON模式来验证JSON,它用于从

我使用的是go rego包,封送时的rego.ResultSet给出了以下内容:

[
  {
    "expressions": [
      {
        "value": {...},
        "text": "data",
        "location": { "row": 1, "col": 1 }
      }
    ]
  }
]
我打算在输入JSON中输出键负责失败的位置,以便在构建错误上下文时使用它 我们在前面使用JSON模式来验证JSON,它用于从输入返回键,我们可以将这些键与错误进行映射


我认为,由于rego可以支持更复杂的决策,其中不止一个键负责生成最终结果,这可能是它不指向故障输入上下文中的位置的原因。除非我遗漏了什么?

回答第一个问题:

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

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

回答第二个问题:


OPA目前没有一种可靠的方法返回输入中JSON值的位置,但是这是有价值的,可以在将来添加。

回答第一个问题:

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

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

回答第二个问题:

OPA目前没有一种可靠的方法返回输入中JSON值的位置,但是这是有价值的,可以在将来添加