How to skip blank array field in POST or PUT request

In a post or put request, I want to skip field in array when variable is blank in CSV file. Here in this example “bullets5” is blank.

fields in CSV file
item_id,title,bullets1,bullets2,bullets3,bullets4,bullets5
1234,men shoes,Textile,Rubber sole,Lace up closure,fabric lining,

{
“item_id”: “{{item_id}}”,
“fields”: [
{ “name”: “title”, “value”: “{{title}}”},
{ “name”: “bullets1”, “value”: “{{bullets1}}”},
{ “name”: “bullets2”, “value”: “{{bullets2}}”},
{ “name”: “bullets3”, “value”: “{{bullets3}}”},
{ “name”: “bullets4”, “value”: “{{bullets4}}”},
{ “name”: “bullets5”, “value”: “{{bullets5}}”}
]
}

Thanks.

Hey, @bukhari.adac!

To do this, you can alter the request body in a pre-request script. Change the body of the request to equal just the variable {{requestBody}}. This will be a local variable.

Then add something like this to the pre-request script:

const requestBody = {
    item_id: null,
    fields: []
};

for (let [key, value] of Object.entries(data)) {
    if (key.startsWith('bullets') || key === 'title') {
        if (value !== '') {
            requestBody.fields.push({
                name: key,
                value: value
            });
        }
    } else {
        requestBody[key] = value;
    }
}

pm.variables.set('requestBody', JSON.stringify(requestBody));

Now when you execute the script in the Collection Runner, the shape of the request body should match what you expect. You can verify this by looking at the logs in the Postman Console.

Hope this helps!

Best,

Kevin

1 Like

Hi Kevin,
Thank you for response. I have copied your suggested script under pre-request script. Can you please let me know what I have to change in the body?

Body:

{
“item_id”: “{{item_id}}”,
“fields”: [
{ “name”: “title”, “value”: “{{title}}”},
{ “name”: “bullets1”, “value”: “{{bullets1}}”},
{ “name”: “bullets2”, “value”: “{{bullets2}}”},
{ “name”: “bullets3”, “value”: “{{bullets3}}”},
{ “name”: “bullets4”, “value”: “{{bullets4}}”},
{ “name”: “bullets5”, “value”: “{{bullets5}}”}
]
}

Thanks.
Adac

as mentioned by kevin. In Body change the body of request with Variables {{variablename}} local one.

It worked. Thanks Kevin & gpub1.

But this is posting integer value. How to post value as String using same Pre-request script?

Thanks.

Adac