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

时间:2016-02-02 17:08:28

标签: json

给出以下jq命令和Json:

"yyyy-MM"

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

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

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

  

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

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

4 个答案:

答案 0 :(得分:54)

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

three: 3
seven: 7

答案 1 :(得分:17)

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

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

值得注意的是.number|tostring周围的parens需要。

答案 2 :(得分:2)

在这种简单情况下,string interpolation隐式转换为字符串可以做到这一点:

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

jq‣play上观看它。

答案 3 :(得分:0)

使用“ map_values”运算符修改对象

示例

  

{“ foo”:{“ bar”:3}}

     

map_values(。+ {“ bar”:.bar | tostring})

输出

  

{    “ foo”:{      “ bar”:“ 3”    }   }