首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Groovy JsonSlurper获取随机值

使用Groovy JsonSlurper获取随机值
EN

Stack Overflow用户
提问于 2022-09-22 14:04:14
回答 1查看 20关注 0票数 0

我对Groovy很陌生,并试图了解处理这个问题的最佳方法。为一个基本问题道歉。

给定Json文件vehicles.json为:

代码语言:javascript
复制
{
  "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的列表中供将来使用(实际上这个列表非常长)

这个方法将得到一个随机的车辆号码:

代码语言:javascript
复制
    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。

任何建议都有助于我的学习。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 14:48:38

代码语言:javascript
复制
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控制台中尝试一下

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73816049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档