Groovy JSON builder необходимо удалить пробелы

Я пытаюсь создать JSON с помощью построителя Groovy JSON. Используемый код представляет собой сценарий в JSR223, как показано ниже: Используемый код:

**def previousResponse = new groovy.json.JsonSlurper().parse(ctx.getPreviousResult().getResponseData())
@groovy.transform.Immutable
class Package {
    String ReferenceId
    String Name
    String Version
    Integer Size
}
def packages = previousResponse.Packages.collect { Package -> new Package(Package.ReferenceId, Package.Name, Package.LastVersion.Version, Package.LastVersion.Size) }
def builder = new groovy.json.JsonBuilder()
builder(HasDraftVersion: false,
        IsApprovalPending: null,
        IsInstalledSilently: true,
        LastModified: "/Date(1535570626907)/",
        LastModifiedBy: "Administrator",
        DeviceConfigurations: [],
        Packages: packages.collect(),
        LdapTargets: null,
        ReferenceId: null,
        DeviceFamily: 6,
        DeviceFamilyQualification: 0,
        Name: "test",
        Description: "",
        Random: "2018-08-29T15:16:47",
        IsPublicAPI: true)
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('',builder.toString(),'')
sampler.setPostBodyRaw(true);        

The result I am getting from the above code is correct and is in the format:

{"HasDraftVersion": false, "IsApprovalPending": null, "IsInstalledSilently": true, "LastModified": "/ Date (1535661532840) /", "LastModifiedBy": "Администратор", "DeviceConfigurations": [], «Пакеты»: [{«referenceId»: «282812e7-c3e6-4ecb-8267-bbe2c250ad59», «version»: «1.0», «size»: 10465294, «name»: «10MB», «packageDependencies»: «» }, {"referenceId": "02f5b531-8e37-42c1-bfcb-ec8db0920bed", "version": "1.0", "size": 104884390, "name": "100MB", "packageDependencies": ""}], «LdapTargets»: null, «ReferenceId»: null, «DeviceFamily»: 6, «DeviceFamilyQualification»: 0, «Name»: «work», «Description»: «», «Random»: «2018-08-30T04: 38:52 "," IsPublicAPI ": true}

Проблема, с которой я столкнулся, связана с последовательностью меток и значений, таких как последовательность для тега Packages, которая должна была быть:

ReferenceID, имя, версия PackageDependencies

Когда я передаю то же самое в следующий HTTP-запрос, я получаю следующее:

{"Data": null, "ErrorCode": 0, "ErrorMessage": "Параметр 'ReferenceId' имеет недопустимое значение ''.", "HelpLink": null, "InnerErrors": [{"Data": [ «ReferenceId», «»], «ErrorCode»: 2, «ErrorMessage»: «Параметр« ReferenceId »имеет недопустимое значение ''.», «HelpLink»: null, «InnerErrors»: null, «Ref»: «2018- 08-30 16: 38: 52.9245-04: 00 "}]," Ссылка ":" 2018-08-30 16: 38: 52.9245-04: 00 "}

ReferenceId передается, и результат есть для того же.


person shashank shukla    schedule 30.08.2018    source источник


Ответы (1)


Похоже, Groovy преобразует имена карт в соответствии с соглашением об именах

Итак, чтобы сохранить этот параметр ReferenceID и друзей такими, какие они есть, а не в случае с верблюдом, вам необходимо изменить эту строку:

Packages: packages.collect()

с этим:

Packages: packages.collect() {
     [
             ReferenceId        : it.ReferenceId,
             Name               : it.Name,
             Version            : it.Version,
             PackageDependencies: "",
             Size               : it.Size
     ]
 },

Полный код на всякий случай:

def previousResponse = new groovy.json.JsonSlurper().parse(ctx.getPreviousResult().getResponseData())

@groovy.transform.Immutable
class Package {
    String ReferenceId
    String Name
    String Version
    Integer Size
}

def packages = previousResponse.Packages.collect { Package -> new Package(Package.ReferenceId, Package.Name, Package.LastVersion.Version, Package.LastVersion.Size) }

def builder = new groovy.json.JsonBuilder()

builder(HasDraftVersion: false,
        IsApprovalPending: null,
        IsInstalledSilently: true,
        LastModified: "/Date(1535570626907)/",
        LastModifiedBy: "Administrator",
        DeviceConfigurations: [],
        Packages: packages.collect() {
            [
                    ReferenceId        : it.ReferenceId,
                    Name               : it.Name,
                    Version            : it.Version,
                    PackageDependencies: "",
                    Size               : it.Size
            ]
        },
        LdapTargets: null,
        ReferenceId: null,
        DeviceFamily: 6,
        DeviceFamilyQualification: 0,
        Name: "test",
        Description: "",
        Random: "2018-08-29T15:16:47",
        IsPublicAPI: true)

sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('',builder.toPrettyString(),'')
sampler.setPostBodyRaw(true);               

Дополнительная информация:

person Dmitri T    schedule 03.09.2018