JMESPath приводит строку к номеру, затем фильтрует больше 0, получает неверный токен (число): 0 сообщение об ошибке

Я хочу получить pretaxCost > 0 данные, но столкнулся с проблемой, как показано ниже:

image

мой JMESPath

[?pretaxCost.to_number(@) > 0]  

демонстрационные данные:

[
  {
    "pretaxCost": "7.19999999999999962124684594298729134465020251809619367122650146484375E-8",
    "instanceName": "demo202009210002"
  },
  {
    "pretaxCost": "0",
    "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 — площадка для разработки кода

что я пытался думать:
я думаю, что pretaxCost является строковым типом, поэтому мне нужно преобразовать тип в число, поэтому я использую функцию to_number, а затем использую выражение > 0, чтобы получить ожидаемый результат, но это не работает..

и я попытался выбрать только pretaxCost to_number, это работает, как показано ниже:
JSFiddle — Code Playground


person ITWeiHan    schedule 07.10.2020    source источник


Ответы (1)


Я прочитал документ Примеры JMESPath — JMESPath

и я пытаюсь выполнить выражение ниже, и это работает

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

система должна использовать

`number`

JSFiddle — площадка для разработки кода

person ITWeiHan    schedule 07.10.2020