通过 jq 从字符串中解析浮点值

Sak*_*res 5 floating-point json type-conversion jq

我有一个特定的 JSON 数据,其中包含我需要在 JSON 数组上有条件地处理的浮点值。这是一个 JSON 实例的示例:

[
   {
      "a": "0",
      "b": "66.67",
      "c": "0",
      "d": "0"
   },
   {
      "a": "12.33",
      "b": "0",
      "c": "60.2",
      "d": "19.3"
   },
   {
      "a": "70.0",
      "b": "92.67",
      "c": "0",
      "d": "0"
   }
]
Run Code Online (Sandbox Code Playgroud)

我希望有条件地选择喜欢

cat mydata.json | jq '.[] | select((.a > 50) and (.b > 50))'
Run Code Online (Sandbox Code Playgroud)

它应该听起来像

{
      "a": "70.0",
      "b": "92.67",
      "c": "0",
      "d": "0"
}
Run Code Online (Sandbox Code Playgroud)

问题是我的原始数据是一个字符串值,我不知道如何解析它以进行条件选择。

Rom*_*est 6

只需使用jqtonumber功能:

jq '.[] | select((.a|tonumber) > 50 and (.b|tonumber) > 50)' mydata.json
Run Code Online (Sandbox Code Playgroud)

输出:

{
  "a": "70.0",
  "b": "92.67",
  "c": "0",
  "d": "0"
}
Run Code Online (Sandbox Code Playgroud)