Groovy 如何在json请求中添加额外数据

Groovy 如何在json请求中添加额外数据,groovy,soapui,Groovy,Soapui,在我的soapui中,我有两个步骤,一个是groovy脚本步骤,另一个是postcrud方法的rest请求步骤 在groovy脚本中,我创建了一个名为“成人”的随机测试用例属性。该值是介于2-5之间的随机值 testRunner.testCase.setPropertyValue('adults', String.valueOf((int)Math.random()*5)+2); 以下是我对该职位的休息要求: { "xxx": "xxx", "ratePlanCode": "xxx"

在我的soapui中,我有两个步骤,一个是groovy脚本步骤,另一个是postcrud方法的rest请求步骤

在groovy脚本中,我创建了一个名为“成人”的随机测试用例属性。该值是介于2-5之间的随机值

testRunner.testCase.setPropertyValue('adults', String.valueOf((int)Math.random()*5)+2);
以下是我对该职位的休息要求:

{
  "xxx": "xxx",
  "ratePlanCode": "xxx"
  "roomOccupancies": [
    {
      "passengersInformation": [
        {
          "firstName": "Test",
          "lastName": "Tester",
          "isLeadPassenger": true,
          "age": 30
        },
      ]
    }
  ],
  "xxx": "xxx"
}
现在这个请求是针对1名成人乘客的,但问题是如果我有多名乘客,我实际上需要“乘客信息”下的多名乘客。因此,对于每一个额外的成年人,我需要补充:

{
      "firstName": "Test",
      "lastName": "Tester",
      "isLeadPassenger": false,
      "age": 30
    },
所以我想的是乘客的名字,因为我们不允许重复名字,我们只是在名字和姓氏的末尾加上一个数字。其他两个字段可以保持不变

因此,我的问题是,如何根据从groovy脚本中随机选择的成人数量,在请求中添加额外的乘客详细信息


谢谢,

这里有一种复制乘客的方法:注意,我必须修复JSON字符串中的两个逗号(多余和缺少)

import groovy.json.*
def jsonData = '''{
  "hotelArrivalDate": "2017-06-01T18:15:00",
  "ratePlanCode": "xxx=",
  "roomOccupancies": [
    {
      "passengersInformation": [
        {
          "firstName": "Test",
          "lastName": "Tester",
          "isLeadPassenger": true,
          "age": 30
        }
      ]
    }
  ],
  "holidaysBookingReference": "TestRef"
}'''
def n=1
def data = (new JsonSlurper()).parseText(jsonData)
def newPerson = data.roomOccupancies[0].
                     passengersInformation[0].
                     collectEntries {k,v -> 
                         ['firstName','lastName'].contains(k) ? [k,v+n] : [k,v]
                     }
data.roomOccupancies[0].passengersInformation << newPerson
jsonData = (new JsonBuilder(data)).toPrettyString()
{
    "hotelArrivalDate": "2017-06-01T18:15:00",
    "ratePlanCode": "xxx=",
    "roomOccupancies": [
        {
            "passengersInformation": [
                {
                    "firstName": "Test",
                    "lastName": "Tester",
                    "isLeadPassenger": true,
                    "age": 30
                },
                {
                    "firstName": "Test1",
                    "lastName": "Tester1",
                    "isLeadPassenger": true,
                    "age": 30
                }
            ]
        }
    ],
    "holidaysBookingReference": "TestRef"
}