微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。