Выполните команду, хранящуюся в строке, которая заменяет значение для данного ключа, оба динамически читаются из таблицы Excel - PullRequest
0 голосов
/ 27 февраля 2019

Ниже приведен Groovy-код, являющийся частью теста ReadyAPI.Пара ключ-значение считывается из таблицы Excel и заменяется в строке Json.Вопрос не уверен, как выполнить команду, хранящуюся в переменной «var».Это должно динамически заменить значение в строке Json.Я пытался использовать Eval.me и некоторые другие, но не работал.Спасибо всем за пожелания и предложения заранее.

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

def req = context.expand( '${Update Bet#RawRequest}' )
def slurperReq = new JsonSlurper().parseText(req)
def excelKey = context.expand( '${DataSource#Key}' )     // Key read from Excel sheet
def excelValue = context.expand( '${DataSource#Value}' ) // Value read from Excel sheet
def actualValue = slurperReq."$excelKey"         // Gets the sctual value for Key "modifiedAt"

//slurperReq.modifiedAt="@@@@@@@@@@@" // This will correctly replace the value for the given key "modifiedAt"

String  var="slurperReq."+excelKey+"=\"@@@@@@@@@@@\"" 
log.info var // Correctly prints >>   slurperReq.modifiedAt="@@@@@@@@@@@"
//*** What should go here to execute the string stored in var, which replace
// the value for key "modifiedAt" ***
def jsonReq = JsonOutput.toJson(slurperReq)
log.info jsonReq

1 Ответ

0 голосов
/ 28 февраля 2019

вам не нужно динамическое выполнение, если вы хотите установить новое значение в карту (объект json)

, есть разные способы сделать это:

def slurperReq = [a:"hello",b: "world"]
def excelKey = "modifiedAt"
// here are three different ways to set new value 
// into a map for the key stored  in a string varable
slurperReq[excelKey] = "@@@@@@@@@@@"
slurperReq."$excelKey" = "@@@@@@@@@@@"
slurperReq.put(excelKey, "@@@@@@@@@@@")

println groovy.json.JsonOutput.toJson(slurperReq)

кодвыше печатает JSON с новым значением

{"a":"hello","b":"world","modifiedAt":"@@@@@@@@@@@"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...