【发布时间】:2019-04-30 12:18:10
【问题描述】:
我正在尝试处理我从 API 获得的 json-s 列表。
[
{
"originalEstimate": "16h",
"remainingEstimate": "9h",
"timeSpent": "7h"
},
{
"originalEstimate": "64h",
"remainingEstimate": "63h",
"timeSpent": "1h"
}
]
我必须对字段求和,我想出了一个代码,但它似乎没有修改 mySum 变量。
对于这个例子,我只使用了“originalEstimate”。
我尝试手动添加元素并且效果很好。例如: (parseFloat(getNum(json[0].originalEstimate))) == 16.0
getNum 是一个从字符串中删除“h”的函数。
代码如下所示:
* def getNum = function (a) {return a.substring(0,a.length()-1)}
* text raw =
"""
[
{
"originalEstimate": "16h",
"remainingEstimate": "9h",
"timeSpent": "7h"
},
{
"originalEstimate": "64h",
"remainingEstimate": "63h",
"timeSpent": "1h"
}
]
"""
* json json = raw
* def mySum = 0
* def fn = function(x) {mySum = mySum + (parseFloat(getNum(x.originalEstimate)))}
* eval karate.forEach(json,fn)
* print mySum
我希望看到 80.0 作为 originalEstimate 总和,但我收到 0。此外,它运行完美,只是不修改 mySum
【问题讨论】:
-
@Aaron,不,我分别验证了组件并且 parseFloat(getNum(json[0].originalEstimate)) == 16.0 工作得很好。我完全没有错误或警告。