JMESPath将字符串强制转换为数字,然后进行大于0的过滤,将得到“无效令牌数字:“ 0”“错误消息

问题描述

我想获取pretaxCost > 0数据,但是遇到如下问题:

image

我的JMESPath

[?pretaxCost.to_number(@) > 0]  

演示数据:

[
  {
    "pretaxCost": "7.19999999999999962124684594298729134465020251809619367122650146484375E-8","instanceName": "demo202009210002"
  },{
    "pretaxCost": "0","instanceName": "demo20092701"
  },{
    "pretaxCost": "0.2399999999999999911182158029987476766109466552734375","instanceName": "demo965546464"
  },{
    "pretaxCost": "0.06278620880000000681331329133172403089702129364013671875","instanceName": "weihanacrdemo"
  },{
    "pretaxCost": "2.16000000000000001872295179138061538282045148662291467189788818359375E-7","instanceName": "092d02d45a464c1291715701"
  }
]

系统显示错误消息:

jmespath.min.js:2 Uncaught ParserError: Invalid token (Number): "0"

JSFiddle - Code Playground

我想过的事情:
我认为pretaxCost是字符串类型,所以我必须将类型转换为数字,因此我使用to_number函数,然后使用表达式 > 0获得我期望的结果,但这是行不通的。

,我尝试仅选择pretaxCost to_number的工作方式如下例所示:
JSFiddle - Code Playground

解决方法

我阅读了文档JMESPath Examples — JMESPath

我尝试使用下面的表达式,它起作用了

[?pretaxCost.to_number(@) > `0`]

系统必须使用

`number`

JSFiddle - Code Playground