Kotlin列表转Any出现空Map,求Karate替代方括号的正确语法
问题解决:Karate创建Kotlin Event对象时列表类型转换异常
你遇到的问题是Karate中直接使用数组字面量['item1','item2']时,未被正确识别为列表类型,反而被转换为空Map,导致Kotlin的Event对象中key1的值不符合预期。
正确语法方案
要可靠地将列表转为Kotlin的Any类型,需显式构造Java兼容的List对象,替代Karate原生数组字面量。具体有两种实现方式:
方式1:通过java.util.Arrays.asList构造列表
* def Event = Java.type('<...>.Event') * def key1List = Java.type('java.util.Arrays').asList('item1', 'item2') * def event = new Event('foo', { key1: key1List, key2: 'value2' })
方式2:使用Karate的karate.list()方法构造列表
* def Event = Java.type('<...>.Event') * def key1List = karate.list('item1', 'item2') * def event = new Event('foo', { key1: key1List, key2: 'value2' })
这两种方式都能确保传递给Kotlin Map<String, Any>的是合法的List实例,避免类型转换错误,最终生成符合预期的Event("foo", mapOf("key1" to listOf("item1","item2"), "key2" to "value2"))对象。
内容的提问来源于stack exchange,提问作者Stan Allosserie
相关产品推荐
相关产品推荐

