用jq从字符串解析浮点值

时间:2018-01-03 12:31:24

标签: json floating-point 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"
   }
]

我希望有条件地选择

cat mydata.json | jq '.[] | select((.a > 50) and (.b > 50))'

它应该听起来像

{
      "a": "70.0",
      "b": "92.67",
      "c": "0",
      "d": "0"
}

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

1 个答案:

答案 0 :(得分:3)

只需使用 jq tonumber功能:

jq '.[] | select((.a|tonumber) > 50 and (.b|tonumber) > 50)' mydata.json

输出:

{
  "a": "70.0",
  "b": "92.67",
  "c": "0",
  "d": "0"
}