首页 > 解决方案 > 空手道 Json 对象 - 嵌套数组对象的 JsonPaths

问题描述

我正在使用空手道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

标签: karate

解决方案


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

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

既然你热衷于为空手道做贡献,也许你可以解决这个问题 :) 随意打开一个问题。

这是解决方法:

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

推荐阅读