如何在请求体的嵌套json中传递变量

时间:2017-12-06 10:08:03

标签: karate

我正在尝试将变量传递给我的请求主体,该主体具有嵌套的json但无法执行此操作。

 Given path 'url'
 * request {abc:'ab',pqrs:'{"mno":"data","ijk":"data"}',dcb:'tata'} // Double quotes are required for 'pqrs' because thats the format of the service.
 When method post
 Then status 200
 * def test = response.lmn
 * print lmn
 * def browser = Java.type('file path') 
 * def testing = browser.do(parameter) // 'do' function will call a java file which will return a String parameter
 * print testing 


Given path 'url'
 * def nested = {uvw:"value",xyz:'#(testing)',ght:} //We tried storing nested variable in json format but that didn't work.
 * request { abc:'ab',pqr:'#(nested)',dcb:'tata' }
 When method post
 Then status 200

点击上述请求后获取错误为“无效的pqr对象”。请提出解决方案。

1 个答案:

答案 0 :(得分:0)

看起来你在形成JSON方面犯了一些基本错误,就是这样。例如,ght字段在上面没有任何内容。我将只关注脚本的第二部分。您可以将下面的内容粘贴到Scenario中并查看它是否有效 - 这是一个很好的提示:您可以快速进行实验,而无需在单独的文件中发出HTTP请求。

* json testing = '{"helo":"world","test":"done"}'
* def nested = { uvw: 'value', xyz: '#(testing)', ght: null }
* def temp = { abc: 'ab', pqr: '#(nested)', dcb: 'tata' }
* print temp

输出是:

[print] {
  "abc": "ab",
  "pqr": {
    "uvw": "value",
    "xyz": {
      "helo": "world",
      "test": "done"
    },
    "ght": null
  },
  "dcb": "tata"
}

所以一切都按预期工作。

编辑:显示如何获取字符串并在需要时将其转换回JSON。请参考type-conversion上的文档,通常你不需要它,但看起来就像你一样。