1

我正在尝试在 Jsonnet 中构建一个类似于以下对象的对象,但我无法找到一种在 Jsonnet 中呈现它的方法。

"properties" :{
  "a" : "value for a",
  "b" : "value for b",
  ...
  "nested" : {
    "a" : "value for a",
    "b" : "value for b",
    ...
  }
}

基本上,我正在寻找一种方法来引用父对象中的以下部分:

    "a" : "value for a",
    "b" : "value for b",
    ...
4

1 回答 1

2

iiuc 你的问题,下面的代码应该做到这一点——本质上是使用一个变量,p在这种情况下被称为 hookpropertiesself

第一个答案:单个嵌套字段:

{
  properties: {
    local p = self,
    a: 'value for a',
    b: 'value for b',
    nested: {
      a: p.a,
      b: p.b,
    },
  },
}

第二个答案:许多嵌套字段:

{
  // Also add entire `o` object as fields named from `field_arr`
  addNested(o, field_arr):: o {
    [x]: o for x in field_arr
  },
  base_properties:: {
    a: 'value for a',
    b: 'value for b',
  },
  // We can't "build" the object while looping on it to add fields,
  // so have it already finalized (`base_properties`) and use below
  // function to add the "nested" fields
  properties: $.addNested($.base_properties, ["n1", "n2", "n3"])
}
于 2019-11-29T02:20:15.580 回答