空手道 DSL - 我在使用正则表达式验证十进制数时遇到问题

问题描述 投票:0回答:1

我有以下json:

[ { “id”:1, “姓名”:“杰克”, “工资”:23.03 }, { “id”:2, “名字”:“卢克”, “工资”:0.00 } ]

我需要验证小数点后只有 2 位数字。

我正在做这个:

* def salary = $response..salary
* karate.appendTo(salary)
* def strs = karate.map(salary, function(x){ return x + '' })
* match each strs == '#regex [0-9].+\\.[0-9]{2}'

当我的工资为“23.40”或“12.30”时,验证是正确的。问题是,当我有 0、2 或 3 时,验证会抛出以下错误:

1st error

2nd error

有人可以帮助我吗?预先感谢您。

karate
1个回答
0
投票

我个人觉得尝试验证 JSON 中数字类型的形状是浪费时间,即使格式不同,数字也是相同的。当您尝试转换为字符串时,您无法控制小数点。例如,试试这个:

* def response = [ { "id": 1, "name": "Jack", "salary": 23.03 }, { "id": 2, "name": "Luke", "salary": 0.00 } ]
* def salaries = response.map(x => x.salary + '')
* print salaries

你得到:

[ "23.03", "0" ]

所以我想说你正在尝试的东西是不可能或不支持的。

© www.soinside.com 2019 - 2024. All rights reserved.