You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate框架如何通过==匹配获取嵌套JSON的Condition11值

问题描述

待处理的JSON数据如下(原始数据存在部分字符串引号未闭合的语法笔误,已修正为标准JSON格式):

{
    "TestA": [
        {
            "Condition1": "Value1",
            "Condition2": "Value2",
            "Condition3": "Value3"
        }     
    ],
    "TestB": [
        {
            "Condition11": "Value11",
            "Condition12": "Value12",
            "Condition13": "Value13"
        }
    ],
    "TestC": [
        {
            "Condition21": "Value21",
            "Condition22": "Value22",
            "Condition23": "Value23"
        }
    ]
}

要求仅使用==等值匹配(不使用contains方法),获取Condition11字段对应的取值Value11。以下两种尝试均失效,执行后会返回完整的嵌套JSON结构:

  • 尝试1:TestB.Condition11 == "Value11",无匹配结果
  • 尝试2:TestB.Condition11[0] == "Value11",无匹配结果
根因分析

两种写法失效的核心原因是字段访问顺序错误:TestB的字段类型是数组,必须先通过索引定位到数组内的具体元素对象,才能读取对象上的自定义属性。

  • 第一种写法直接在数组类型字段后点取内部属性,本质是访问数组对象本身的内置静态属性,完全没有触达数组内存储的业务对象,自然拿不到Condition11的值
  • 第二种写法把数组索引写在了属性名Condition11的后面,访问逻辑完全颠倒,不可能匹配到目标值
正确写法

将数组索引紧跟在数组字段TestB之后,先定位到数组第0位存储的对象,再访问该对象上的Condition11属性做等值判断即可,代码如下:

TestB[0].Condition11 == "Value11"

该写法适配绝大多数JSON解析引擎、JSONPath规则、低代码逻辑判断场景,匹配成功后即可精准获取目标值Value11,不会返回全量嵌套结构。


内容的提问来源于stack exchange,提问作者Sriharsha Karanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:51:20