如果它在嵌套字典中,如何访问 Jsonnet 中的变量?
How to access a variable in Jsonnet if it's in a nested dictionary?
我的目标是使嵌套字典中的外部字段可以访问内部字段的值。
假设我有以下代码
diction: {
"outer": "part1",
{
"inner": "part2"
}
"outer and inner": outer + inner
}
上面的代码不起作用,因为 inner 由于作用域而无法访问。我想做一些像 global
diction: {
"outer": "part1",
{
global "inner": "part2"
}
"outer and inner": outer + inner
}
或者想办法让 jsonnet 变量可变,这样我仍然可以修改一个变量来提取 inner 的值。
diction: {
"outer": "part1",
"outer and inner": "",
{
"inner": "part2",
"outer and inner": outer + inner
}
}
有没有办法做到这一点?
请注意,您的 jsonnet
脚本在语法上不正确:您应该 不 将 jsonnet
视为具有“内部”作用域的“标准”命令式语言, 但真正作为“可编程 JSON” 而不是,要重 over-simplify 它。
因此,jsonnet
程序的结构 (/schema) 与 JSON syntax, nevertheless please do read https://jsonnet.org/learning/tutorial.html 和相关语言 material.
相当接近(r)
将您的原始问题重新设计为语法正确,您可以使用 self
引用当前对象的范围,然后使用点符号来引用包含的对象的字段:
代码
{
diction: {
outer: 'part1',
// NB: `in1` is an object (in jsonnet terms), with key:value entries such as `inner`
in1: {
inner: 'part2',
},
'outer and inner': self.outer + self.in1.inner,
},
}
产出
{
"diction": {
"in1": {
"inner": "part2"
},
"outer": "part1",
"outer and inner": "part1part2"
}
}
请注意,如果您想使 outer
和 in1
字段在 JSON 输出中无效,您可以使用 double-colon 符号作为 outer::
和 in1::
.
我的目标是使嵌套字典中的外部字段可以访问内部字段的值。
假设我有以下代码
diction: {
"outer": "part1",
{
"inner": "part2"
}
"outer and inner": outer + inner
}
上面的代码不起作用,因为 inner 由于作用域而无法访问。我想做一些像 global
diction: {
"outer": "part1",
{
global "inner": "part2"
}
"outer and inner": outer + inner
}
或者想办法让 jsonnet 变量可变,这样我仍然可以修改一个变量来提取 inner 的值。
diction: {
"outer": "part1",
"outer and inner": "",
{
"inner": "part2",
"outer and inner": outer + inner
}
}
有没有办法做到这一点?
请注意,您的 jsonnet
脚本在语法上不正确:您应该 不 将 jsonnet
视为具有“内部”作用域的“标准”命令式语言, 但真正作为“可编程 JSON” 而不是,要重 over-simplify 它。
因此,jsonnet
程序的结构 (/schema) 与 JSON syntax, nevertheless please do read https://jsonnet.org/learning/tutorial.html 和相关语言 material.
将您的原始问题重新设计为语法正确,您可以使用 self
引用当前对象的范围,然后使用点符号来引用包含的对象的字段:
代码
{
diction: {
outer: 'part1',
// NB: `in1` is an object (in jsonnet terms), with key:value entries such as `inner`
in1: {
inner: 'part2',
},
'outer and inner': self.outer + self.in1.inner,
},
}
产出
{
"diction": {
"in1": {
"inner": "part2"
},
"outer": "part1",
"outer and inner": "part1part2"
}
}
请注意,如果您想使 outer
和 in1
字段在 JSON 输出中无效,您可以使用 double-colon 符号作为 outer::
和 in1::
.