空手道 Json 对象 - Json 嵌套数组对象的路径

Karate Json Object - JsonPaths for nested array objects

我正在使用空手道 java-api 来处理 Json 对象。我要创建以下 json:

{
    "a": [
        {
            "b": [
                {
                    "c": "hello"
                }
            ]
        }
    ]
}

当我尝试 json.set("$.a[0].b[0].c", "hello") 时,出现以下错误:

Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.util.List (java.util.LinkedHashMap and java.util.List are in module java.base of loader 'bootstrap')
    at com.intuit.karate.Json.createPath(Json.java:232)
    at com.intuit.karate.Json.createPath(Json.java:246)
    at com.intuit.karate.Json.setInternal(Json.java:199)
    at com.intuit.karate.Json.set(Json.java:148)

经过交叉检查,json 路径语法是正确的,还有我可能遗漏的任何其他点吗?

编辑:我使用的是 karate-core v1.1.0

看起来像是空手道中的一个错误,其中不支持如此多的数组嵌套。要复制:

* def foo = {}
* set foo.a[0].b[0].c = 'hello'
* print foo

既然你热衷于为空手道做出贡献,也许你可以解决这个问题 :) 欢迎提出问题。

解决方法如下:

* def foo = {}
* set foo.a[0].b = [{ c: 'hello' }]
* print foo