我对Groovy很陌生,并试图了解处理这个问题的最佳方法。为一个基本问题道歉。
给定Json文件vehicles.json为:
{
"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...我想为给定的环境选择一辆随机的汽车,然后将它的vehicle和name属性提取到2的列表中供将来使用(实际上这个列表非常长)
这个方法将得到一个随机的车辆号码:
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
}这给了我一个随机的vehicle,例如192039。我需要能够提取与随机选择的name相关联的vehicle,并将其存储在列表或对象中,这样我就可以提取这两种方法,以便将来使用。例如,randomVehicle存储的是29303, SMART 500,如果存储在对象中,则可以通过索引从列表中获取或使用getter。
任何建议都有助于我的学习。谢谢。
发布于 2022-09-22 14:48:38
def input = """
{
"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"
}
]
}
"""
def jsonSlurper = new groovy.json.JsonSlurper()
def envVehiclesList = jsonSlurper.parseText(input)
def env = "prod"
def vehicleList = []
switch (env) {
case "prod":
vehicleList = (envVehiclesList.prod)
break;
case "preprod":
vehicleList = (envVehiclesList.preprod)
break;
case "dev":
vehicleList = (envVehiclesList.dev)
break;
default:
throw new IllegalArgumentException("Unknown Environment: $env")
}
def rand = new Random()
def randomVehicle = vehicleList.get(rand.nextInt(vehicleList.size()))
println("Random Base Vehicle: $randomVehicle")只要不选择.vehicle,那么您就有了所有的数据。在Groovy Web控制台中尝试一下
https://stackoverflow.com/questions/73816049
复制相似问题