I'm new to Groovy and trying to understand the best way of approaching this. Apologies for an elementary question.
Given a Json file vehicles.json of:
{
"prod": [
{
"id": "CAR LARGE",
"vehicle": "102920",
"name": "BMW 325"
},
{
"id": "CAR MEDIUM",
"vehicle": "192039",
"name": "VOLVO V40"
},
{
"id": "CAR SMALL",
"vehicle": "29303",
"name": "SMART 500"
}
],
"preprod": [
{///entries for this environment...
I want to pick a random Car for a given environment, then extract it's vehicle and name properties into List of 2 for future use (in reality the list is very long)
This method will get a random vehicle number:
def getVehicle() {
def jsonSlurper = new JsonSlurper()
def envVehiclesList = jsonSlurper.parseText(new File('src/main/resources/data/vehicles.json').text)
List<String> vehicleList = new ArrayList<>();
switch (System.getProperty("env")) {
case "prod":
vehicleList = (envVehiclesList.prod*.vehicle)
break;
case "preprod":
vehicleList = (envVehiclesList.preprod*.vehicle)
break;
case "dev":
vehicleList = (envVehiclesList.dev*.vehicle)
break;
default:
vehicleList = "18292" as List<String>
}
def rand = new Random()
def randomVehicle = vehicleList.get(rand.nextInt(vehicleList.size()))
log.info("Random Base Vehicle: {}", randomVehicle)
return randomVehicle
}
This gives me a random vehicle e.g. 192039. I need to be able to extract the name associated with the randomly chosen vehicle and store it in a List or Object so I can extract both for future use e.g. randomVehicle stores both 29303, SMART 500 and I can get by index from a list or use a getter if stored in an Object.
Any suggestions would help my learning. Thank you.