我正在尝试从有效负载中的属性中获取值,但空手道抛出错误,或者根本没有获取该值。
我创建了代码的简化版本,以使其更易于理解。
* def lists = [{@id: 1, type: 'video'}, {@id: 2, type: 'image'}]
* def ser = {@id: 2, type: '#string'}
* def foundAt = []
* def fun = function(x, i){ if (karate.match(x, ser).pass) foundAt.add(i) }
* eval karate.forEach(lists, fun)
* def storeId = lists[foundAt[0]].@id
* def storeType = lists[foundAt[0]].type
* print storeId
* print storeType
打印storeType 将按预期打印该值,但打印storeId 将打印以下错误消息:
javascript evaluation failed: lists[foundAt[0]].@id, <eval>:1:18 Expected ident but found error
lists[foundAt[0]].@id
^ in <eval> at line number 1 at column nu*mber 18
我希望会打印'2'值,但是很明显我做错了什么?
答案 0 :(得分:1)
一个小小的改动就可以解决问题,因为"scripts": {
"start": "node kahoot-tools.js"
}
是JSON键名的“坏”字符:
@
以下还建议您简化代码:
* def storeId = lists[foundAt[0]]['@id']