语法错误,意外 |=,期待“}”

syntax error, unexpected |=, expecting '}'

我想用jq过滤器构建一个json,用例很简单,

我有一个 json 文件,

# cat input.json
{"foo": 42, "bar": "less interesting data"}

我想用 jq 生成一个 json 文件,

输出: 增加 foo 的值,

[
  {
    "leafCalls": {
      "text": 43
    }
  }
]

我使用的过滤器是这样定义的,

# cat results.jq
[.[] | . as { foo: $leafText,  bar: $leafCode} | {
    leafCall: {
      text: $leafText
    },
  } | {
    leafCalls: .leafCall |= . + 1
}]

但是存在语法问题,如下所述,

# <input.json jq  --slurp --from-file results.jq > output.json
jq: error: syntax error, unexpected |=, expecting '}' (Unix shell quoting issues?) at <top-level>, line 6:
    leafCalls: .leafCall |= . + 1
jq: 1 compile error

此外,如果想将一个字符串连接到"bar"的值,也有一个问题,

因为我想要的是,

[
  {
    "leafCalls": {
      "text": "less interesting data string"
    }
  }
]

过滤器是

# cat results2.jq
[.[] | . as { foo: $leafText,  bar: $leafCode} | {
    leafCall: {
      text: $leafCode },
  } | {
    leafCalls: .leafCall + " " + "string"
}]

jq 说,

jq: error: syntax error, unexpected '+', expecting '}'

谁能告诉过滤器定义有什么问题?

要获得第一个输出,直接增加值。需要括号优先。

jq '[. as { foo: $leafText } | {
    leafCalls: {
      text: ($leafText + 1)
    },
  }
]' input.json

字符串也类似:

jq '[ . as { foo: $leafText,  bar: $leafCode}
    | { leafCalls: { text: ($leafCode + " string" ) } } ]
    ' input.json