Jmeter_获取接口返回的数组信息

5 阅读1分钟
  1. JSR223 PostProcessor
import java.text.SimpleDateFormat
import java.util.Date

// 1. 配置CSV路径(按需修改)
def csvFile = "JMeter/260112/jmeter_0112A_visit_info.csv"
def userName = vars.get("username") ?: "NULL"

try {
    def response = prev.getResponseDataAsString()
    def json = new groovy.json.JsonSlurper().parseText(response)
    
    if(json.data) {
        // 创建文件对象(不立即创建物理文件)
        def file = new File(csvFile)
        boolean isFirstWrite = !file.exists()
        
        json.data.each { ment ->
            def status = ment.status.toString()
            
            // 仅处理EXPIRED/ACTIVE状态的数据
            if(status == "EXPIR" || status == "ACT") {
                // 同步写入避免并发冲突
                synchronized(this) {
                    // 首次写入时创建表头
                    if(isFirstWrite) {
                        file.write("UsName,UserId,VisId,Sta\n", "UTF-8")
                        isFirstWrite = false
                    }
                    
                    // 构建数据行
                    def dataLine = "${usName},${ment.extUsrId}," +
                                   "${ment.extId},${stus}\n"
                    
                    // 追加数据
                    file.append(dataLine, "UTF-8")
                }
                
                // 记录调试信息(可选)
                log.info("写入: ${userName} | ${ment.extalId} | ${atus}")
            }
        }
        log.info("数据写入完成: ${csvFile}")
        
    } else {
        log.warn("JSON响应中未找到data字段")
    }
} catch(Exception e) {
    log.error("CSV写入失败: " + e.getMessage())
    SampleResult.setResponseData("错误: ${e.message}", "UTF-8")
}