How to dynamically change JSON elements within Groovy Script
I want to change two JSON elements each time I send a request within SoapUI.
I have my request setup within test properties and each time the test case is ran a new email address and postal address should be created in order to create unique users. My code is as follows:
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
import groovy.json.JsonBuilder
def props = new java.util.Properties();
props = testRunner.testCase.testSuite.project.testSuites["Avios"].testCases["SuccessJoin"].testSteps["Properties"];
def username = System.currentTimeMillis()
def email = username + "@aerlingus.com"
def random = Math.abs(new Random().nextInt() % 600) + 1
def address = random + " Swords manor"
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText'''{
"member":{
"person":{
"name":{
"title":"Mr",
"firstName":"Jack",
"middleInitial":[
"L"
],
"familyName":"SMITH",
"type":"MARRIED_NAME"
},
"dateOfBirth":"1990-12-15",
"gender":"MALE",
"countryOfResidence":"US",
"locale":{
"languageCode":"en"
},
"postalAddresses":{
"preferredPostalAddress":{
"type":"PERSONAL",
"placeType":"NOT_KNOWN",
"addressLine":[
"13120 River valley drive",
"Swords"
],
"country":"US"
}
},
"emailAddresses":{
"preferredEmailAddress":{
"email":"jack176405238@aol.com",
"type":"BUSINESS",
"mailboxType":"INDIVIDUAL"
}
},
"telecomAddresses":{
"preferredTelecomAddress":{
"areaCode":"087",
"number":"1234560",
"type":"PERSONAL",
"deviceType":"MOBILE"
}
}
}
}
}'''
object.member.person.emailAddresses.preferredEmailAddress.email = email
object.member.person.postalAddresses.preferredPostalAddress.addressLine = address
def jsonReqAsString = JsonOutput.toJson(object)
props.setPropertyValue('NextRequestJson',jsonReqAsString);
log.info(jsonReqAsString)
I get an error when I run this saying:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token\n
Any help would be greatly appreciated.