使用Groovy JsonSlurper获取随机值

rjzwgtxy  于 2022-10-07  发布在  其他
关注(0)|答案(0)|浏览(89)

我是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...

我想为给定的环境随机挑选一辆汽车,然后将它的vehiclename属性提取到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。我需要能够提取与随机选择的vehicle相关联的name,并将其存储在列表或对象中,以便我可以提取两者以供将来使用,例如randomVehicle存储29303, SMART 500,我可以通过索引从列表中获取29303, SMART 500,或者使用getter(如果存储在对象中)。

任何建议都会对我的学习有所帮助。谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题