如何使用jq将数字转换为字符串?

问题描述 投票:0回答:3

给出以下 jq 命令和 Json:

jq '.[]|[.string,.number]|join(": ")' <<< '
[
  {
    "number": 3,
    "string": "three"
  },
  {
    "number": 7,
    "string": "seven"
  }
]
'

我正在尝试将输出格式化为:

three: 3
seven: 7

不幸的是,我的尝试导致了以下错误:

jq: 错误:无法添加字符串和数字

如何将数字转换为字符串以便两者可以连接?

json jq
3个回答
112
投票

jq 命令具有 tostring 功能。我花了一段时间通过反复试验才学会使用它。使用方法如下:

jq -r '.[] | [ .string, .number|tostring ] | join(": ")' <<< '
[{ "number": 9, "string": "nine"},
 { "number": 4, "string": "four"}]
'
nine: 9
four: 4

70
投票

另一种可以说更直观的格式是:

jq '.[] | .string + ": " + (.number|tostring)' <<< ...

值得注意的是

.number|tostring
周围需要括号。


16
投票

对于这种简单的情况字符串插值隐式转换为字符串即可:

.[] | "\( .string ): \( .number )"

jq‣play 上查看实际效果。

© www.soinside.com 2019 - 2024. All rights reserved.