【问题标题】:JsonPath: find an element in an array by fieldJsonPath:按字段查找数组中的元素
【发布时间】:2020-09-14 14:47:39
【问题描述】:

我有一个匿名对象数组,我想通过特定字段查找对象。

我试过这个:

jsonPath.get("$.[?(@.name == 'David')]")

但我收到以下错误:

Invalid JSON expression:
Script1.groovy: 1: Unexpected input: '                         $.[' @ line 1, column 29.
                            $.[?(@.name == 'David')]
                               ^

1 error

我该如何解决?

json 是:

[
 {"name": "David"}, {"name": "Ron"}, {"name": "Dana"}
]

【问题讨论】:

    标签: java json rest-assured rest-assured-jsonpath jayway


    【解决方案1】:

    问题有点模棱两可,但是语法不正确,Json path语法使用Groovy's GPath表示法

    js.getString("find {it.name == 'David'}")
    

    【讨论】:

    • 不确定我是否理解语法。 it 是什么?
    • Groovy 中的it 运算符类似于Jayway 中的@ 运算符
    【解决方案2】:

    你可能需要

    $.[?(@.name == 'David')]
    
    =>  $.data[?(@.name == 'David')]
        $.response[?(@.name == 'David')]
        $.body[?(@.name == 'David')]
        ...
    

    名称取决于您提取响应的时间

    【讨论】:

    • 数组是匿名的(请看JSON示例)
    • 只有 OP 知道,但它不应该是匿名的,哈哈
    【解决方案3】:

    因为您使用的是 json Array , 使用 - $[0] , 因为大卫在第一个索引上。

    【讨论】:

    • 这只是一个例子。位置随意
    • 同意,que 是模棱两可的。
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多