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

如何在soapUI Groovy中从GET请求响应取值构造JSON POST请求

搞定Groovy从GET响应提取数据构造POST请求的方法

嘿,作为Groovy新手能成功发起GET请求拿到响应已经超棒啦!针对你要提取特定字段构造POST请求的需求,我来给你一步步拆解实现:

首先,你给出的JSON响应有一点语法小问题(比如键值对之间、数组元素之间缺逗号),我先帮你修正成合法的JSON格式,实际处理时你的响应应该是符合规范的哈:

{
  "Id": 12,
  "Cntid": 3,
  "MrId": 1257,
  "Details": [
    {"stid": 224, "trqty": 2, "Soh": 22},
    {"stid": 224, "trqty": 2, "Soh": 27},
    {"stid": 2341, "trqty": 21, "Soh": 89}
  ]
}

接下来用Groovy的原生JSON工具JsonSlurper来处理就非常方便,代码示例如下:

import groovy.json.JsonSlurper
import groovy.json.JsonBuilder

// 模拟你的GET响应JSON字符串(实际中替换成你拿到的响应内容)
def getResponseJson = '''
{
  "Id": 12,
  "Cntid": 3,
  "MrId": 1257,
  "Details": [
    {"stid": 224, "trqty": 2, "Soh": 22},
    {"stid": 224, "trqty": 2, "Soh": 27},
    {"stid": 2341, "trqty": 21, "Soh": 89}
  ]
}
'''

// 1. 解析GET响应的JSON为Groovy的Map结构
def slurper = new JsonSlurper()
def responseData = slurper.parseText(getResponseJson)

// 2. 提取需要的字段,构造POST请求的数据结构
def postRequestData = [
    Id: responseData.Id,
    Cntid: responseData.Cntid,
    Details: responseData.Details.collect { detail ->
        // 只保留stid和trqty字段,过滤掉Soh
        [stid: detail.stid, trqty: detail.trqty]
    }
]

// 3. 把构造好的数据转成JSON字符串,用于POST请求
def jsonBuilder = new JsonBuilder(postRequestData)
def postJson = jsonBuilder.toPrettyString()

// 打印结果看看是否符合预期
println(postJson)

代码解释:

  • JsonSlurper:Groovy自带的JSON解析工具,能把JSON字符串转成易于操作的Groovy Map/List对象。
  • collect方法:Groovy列表的便捷操作,遍历原Details数组,每个元素只保留我们需要的stid和trqty字段,自动生成新的列表。
  • JsonBuilder:用来把Groovy对象转回JSON字符串,toPrettyString()可以生成格式化的JSON,方便查看。

运行这段代码后,你得到的POST JSON就是你想要的格式:

{
  "Id": 12,
  "Cntid": 3,
  "Details": [
    {"stid": 224, "trqty": 2},
    {"stid": 224, "trqty": 2},
    {"stid": 2341, "trqty": 21}
  ]
}

如果实际场景中你的GET响应是从HTTP请求直接拿到的(比如用HttpURLConnection或者Groovy的HTTPBuilder),只需要把响应体字符串传入parseText()就行,逻辑是一样的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:31:58