当前位置: 首页 > 知识库问答 >
问题:

在空手道中使用jsonPath将值设置为json

李云
2023-03-14

我有下面的Json文件(Test.json)读入空手道变量

TestInput.json:

{
  "firstName": "John",
  "lastName" : "doe",
  "age"      : 26,
  "address"  : {
    "streetAddress": "naist street",
    "city"         : "Nara",
    "postalCode"   : "630-0192"
  },
  "phoneNumbers": [
    {
      "type"  : "Mobile",
      "number": "0123-4567-8888"
    },
    {
      "type"  : "home",
      "number": "0123-4567-8910"
    }
  ]
}

我打算在我的空手道代码中更改手机号码的值,并使用 Json 作为我的请求,并使用以下行

空手道代码:

 * def reqJson = read('TestInput.json')
 * karate.set('reqJson','$.phoneNumbers[?(@.type=="Mobile")].number',"999999999")
 Then print reqJson

打印语句的输出没有使用 Mobile 的数字更新 json。

或者,我也使用了下面的行来设置变量,但这也不起作用:

* set reqJson.phoneNumbers[?(@.type=="Mobile")].number = "99999999"

通过空手道这可能吗?如果是的话,有人能告诉我哪里出错了,或者有什么替代的方法来实现我的设想吗?

谢了。

共有1个答案

华凯捷
2023-03-14

您不能使用JsonPath进行变异。直接访问路径或使用map()操作:https://github.com/karatelabs/karate#json-transforms

这只是一个示例,假设JSON位于名为body的变量中。花一些时间来适应JSON转换。

* body.phoneNumbers = body.phoneNumbers.map(x => { x.number = '999'; return x })
 类似资料:
  • 我有一个Json响应,如下所示。这里的区别是我的Json主体有一个数字作为父节点。 路径$[“22388043”][0][“移动号码”]没有结果 请就此提出意见。

  • 我有下面的xml响应,我需要使用空手道断言“result”值 我能够获取“值”对象的数据,但不能获取“结果”元素的数据。

  • 在我们的测试功能(用于API测试)中,我们在后台创建测试用例所需的数据(例如:用户,他们的数据...)。我们希望在不同的模式下使用相同的测试功能。如何在后台设置数据?我的意思是我们如何为我们的测试功能使用“不同的”背景。我们希望运行相同的测试功能: > 在管理或非管理模式下,所以在后台我们需要创建一个用户帐户,然后生成一个访问令牌,然后使用该令牌为该用户添加一些数据;该令牌用于每个场景; 对于注入

  • 我需要在空手道测试的功能中使用动态值。 我遇到了一些类似这样的问题和答案:如何从excel电子表格中读取输入数据并在空手道框架中传递JSON负载? 但不管我怎么努力,我都做不到。我相信我应该分享我试图使用的代码部分,这样讨论就可以开始了。 我有一个创建新用户的SOAP请求,如下所示: 正如你所看到的,我有一些将从外部给出的变量,它们是:帐户号、子标识、子类型和移动。 现在,我有了一个特性文件,我在

  • 我有一个需求,我需要更新JSON中的值。我需要更新的键的路径也是基于一些条件,所以我必须在属性文件中维护路径。这是我的JSON 现在我的要求是假设我需要更新pre_paid的值到N,但需要pre_paid的路径是动态的,因为有时我可能需要更新state_code或sort_code或pre_paid等。所以我使用JSONPath: 我需要将这些路径存储在一些属性文件/DB中。 我能够通过以下代码读

  • 问题内容: 我希望将值设置为如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,但这只是将单词添加到字段中。 我不确定应该为此提供什么代码,我只是在编写UPDATE查询。 问题答案: 不要在更新语句中加引号。这应该工作:

  • 我试图从以下JSON文本中设置作者值,但我的代码正在删除json文本的所有其他子级。 我尝试将第一本书中的作者更新为以下其他值。 设置步骤后,我的json只有书[1]的内容,如下所示。请告知如何才能获得我用替换值作为输出给出的整个json输入。 问候,萨蒂什。

  • 问题内容: 如何在Java中使用org.json.JSONObject将值设置为null?我肯定可以通过使用isNull来读取值是否为null,但是当我将其设置为null时,它只会忽略我: 问题答案: 尝试设置而不是: 用于明确定义没有值的名称的哨兵值。与null不同,具有以下值的名称: 显示在names()数组中 出现在keys()迭代器中 为has(String)返回true 不要抛出get(