Как управлять переменной внутри строки значения json? - PullRequest
1 голос
/ 20 февраля 2020

У меня есть переменная карточка в моем файле конфигурации карате.

Я назначил его новой переменной entrID .

enter image description here Главное, что я строю JSON в виде строки ..

 * def entrID = cardholder  
 * def requestContactHistoryAdd = 
   """ 
   { 
   "RequestBody": "{ \"ENTR_ID\" : \"entrID\", \"BHVR_ID\" : \"VRU\", }"
   } 
   """

Теперь, как я могу предоставить его внутри моего json RequestBody?

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Я решил это так же, как это

 * def entrID = someValueFromSomeWhere
 * def bodyValue = "{ \"ENTR_ID\":\"" + entrID + "\", \"BHVR_ID\" : \"VRU\" }"
 * def requestContactHistoryAdd = 
   """ 
   { 
   "RequestBody": "#(bodyValue)"
   } 
   """

мы также можем сделать это

 * def bodyValue = "{ \"ENTR_ID\":\"" + someValueFromSomeWhere + "\", \"BHVR_ID\" : \"VRU\" }"
 * def requestContactHistoryAdd = 
  """
  { 
  "RequestBody": "#(bodyValue)" 
  }
  """

1 голос
/ 20 февраля 2020

РЕДАКТИРОВАТЬ: поскольку у вас, похоже, очень плохо спроектированный API, в котором JSON имеет встроенную строку (которая выглядит как JSON).

Обратите внимание, что я использую тип string ниже : https://github.com/intuit/karate#type -конверсия

Вы можете сделать это:

* def entrID = 'foo'  
* string temp = { "ENTR_ID" : "#(entrID)", "BHVR_ID" : "VRU" }
# note that you could have done this: 
# def temp = '{ "ENTR_ID" : "' + entrID + '", "BHVR_ID" : "VRU" }'
* def body = { RequestBody: '#(temp)' }
* print body

Что дает вам:

08:17:25.671 [main] INFO  com.intuit.karate - [print] {
  "RequestBody": "{\"ENTR_ID\":\"foo\",\"BHVR_ID\":\"VRU\"}"
}
...