I have a particular JSON data which contain float value that I need to conditionally process over an array of JSON. This is an example of one JSON instance:
[
   {
      "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"
   }
]
and I wish to conditionally select like
cat mydata.json | jq '.[] | select((.a > 50) and (.b > 50))'
and it should sound like
{
      "a": "70.0",
      "b": "92.67",
      "c": "0",
      "d": "0"
}
The problem is my original data is a string value and I have no idea how to parse it for a conditional selection.
Find code to convert String to float or double using jQuery. To convert, use JavaScript parseFloat() function parses a string and returns a floating point number. var sVal = '234.54'; var iNum = parseFloat(sVal); //Output will be 234.54.
The parseFloat() function is used to accept a string and convert it into a floating-point number. If the input string does not contain a numeral value or If the first character of the string is not a number then it returns NaN i.e, not a number.
The parseFloat() function parses an argument (converting it to a string first if needed) and returns a floating point number.
Simply with jq's tonumber function:
jq '.[] | select((.a|tonumber) > 50 and (.b|tonumber) > 50)' mydata.json
The output:
{
  "a": "70.0",
  "b": "92.67",
  "c": "0",
  "d": "0"
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With