You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Groovy JsonSlurper随机获取车辆的vehicle与name属性

优化方案:从指定环境随机获取车辆的vehicle和name属性

首先假设你的vehicles.json结构大致如下:

{
  "prod": [
    {"id": 1, "vehicle": "V001", "name": "Sedan A"},
    {"id": 2, "vehicle": "V002", "name": "SUV B"},
    {"id": 3, "vehicle": "V003", "name": "Truck C"}
  ],
  "preprod": [
    {"id": 4, "vehicle": "P001", "name": "Hatchback D"}
  ]
}

1. 解析JSON文件

Groovy自带JsonSlurper,无需额外依赖即可轻松解析JSON数据:

import groovy.json.JsonSlurper

// 读取并解析JSON文件
def jsonSlurper = new JsonSlurper()
def vehiclesData = jsonSlurper.parse(new File('vehicles.json'))

2. 优化随机获取方法

你可以选择返回Map快速实现,或者自定义类封装属性(更适合后续扩展),两种方案如下:

方案一:返回Map(快速落地)

def getRandomVehicleDetails(String env) {
    // 校验指定环境是否有可用数据
    def envVehicles = vehiclesData[env]
    if (!envVehicles || envVehicles.isEmpty()) {
        throw new IllegalArgumentException("环境 ${env} 没有可用车辆数据")
    }
    // 随机选取一辆车
    def randomVehicle = envVehicles[new Random().nextInt(envVehicles.size())]
    // 返回包含目标属性的Map
    return [vehicle: randomVehicle.vehicle, name: randomVehicle.name]
}

// 使用示例
def selected = getRandomVehicleDetails('prod')
println "选中的车辆编号:${selected.vehicle},名称:${selected.name}"

方案二:自定义类封装(规范易维护)

如果后续需要扩展车辆属性,自定义类的结构会更清晰:

// 定义车辆数据类
class VehicleDetails {
    String vehicle
    String name
}

def getRandomVehicleDetails(String env) {
    def envVehicles = vehiclesData[env]
    if (!envVehicles || envVehicles.isEmpty()) {
        throw new IllegalArgumentException("环境 ${env} 没有可用车辆数据")
    }
    def randomVehicle = envVehicles[new Random().nextInt(envVehicles.size())]
    // 实例化自定义类并返回
    return new VehicleDetails(vehicle: randomVehicle.vehicle, name: randomVehicle.name)
}

// 使用示例
def selected = getRandomVehicleDetails('prod')
println "选中的车辆编号:${selected.vehicle},名称:${selected.name}"

额外优化建议

  • 可以复用一个全局的Random实例,避免每次调用方法都创建新对象
  • 若JSON数据量极大,可改用INDEX_OVERLAY模式解析优化内存占用:
def jsonSlurper = new JsonSlurper().setType(JsonParserType.INDEX_OVERLAY)

内容的提问来源于stack exchange,提问作者Steerpike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:45:40