Search code examples
postmannewman

Fetch specific JSON object from a JSON file and make it to write at another JSON file


In postman project,I am maintaining multiple variables in a single enviornment JSON file.

To maintain code,I want to fetch specific which means required objects from the JSON file and do write in new JSON file.(For Example From Attached Pic),Want to fetch object which is having key name as "UTCDateTime" and write it into a separate JSON file.

Is it possible in JS? Thanks in advance

{
"id": "6****8-1b78-48af-aff2-28******4565",
"name": "Dev_C@of@g_@ile",
"values": [
    {
        "key": "JobName",
        "value": "QATest123",
        "type": "any",
        "enabled": true
    },
    {
        "key": "JobIdentity",
        "value": "12356",
        "type": "any",
        "enabled": true
    },
    {
        "key": "JobData",
        "value": "[\"Asia/Almaty\",\"Asia/Amman\",\"Asia/Anadyr\",\"Asia/Aqtau\",\"Asia/Aqtobe\",\"Asia/Ashgabat\",\"Asia/Atyrau\",\"Asia/Baghdad\",\"Asia/Baku\",\"Asia/Bangkok\",\"Asia/Barnaul\",\"Asia/Beirut\",\"Asia/Bishkek\",\"Asia/Chita\",\"Asia/Choibalsan\",\"Asia/Colombo\",\"Asia/Damascus\",\"Asia/Dhaka\",\"Asia/Dili\",\"Asia/Dubai\",\"Asia/Dushanbe\",\"Asia/Famagusta\",\"Asia/Gaza\",\"Asia/Hebron\",\"Asia/Ho_Chi_Minh\",\"Asia/Hong_Kong\",\"Asia/Hovd\",\"Asia/Irkutsk\",\"Asia/Jakarta\",\"Asia/Jayapura\",\"Asia/Jerusalem\",\"Asia/Kabul\",\"Asia/Kamchatka\",\"Asia/Karachi\",\"Asia/Kathmandu\",\"Asia/Khandyga\",\"Asia/Kolkata\",\"Asia/Krasnoyarsk\",\"Asia/Kuching\",\"Asia/Macau\",\"Asia/Magadan\",\"Asia/Makassar\",\"Asia/Manila\",\"Asia/Nicosia\",\"Asia/Novokuznetsk\",\"Asia/Novosibirsk\",\"Asia/Omsk\",\"Asia/Oral\",\"Asia/Pontianak\",\"Asia/Pyongyang\",\"Asia/Qatar\",\"Asia/Qostanay\",\"Asia/Qyzylorda\",\"Asia/Riyadh\",\"Asia/Sakhalin\",\"Asia/Samarkand\",\"Asia/Seoul\",\"Asia/Shanghai\",\"Asia/Singapore\",\"Asia/Srednekolymsk\",\"Asia/Taipei\",\"Asia/Tashkent\",\"Asia/Tbilisi\",\"Asia/Tehran\",\"Asia/Thimphu\",\"Asia/Tokyo\",\"Asia/Tomsk\",\"Asia/Ulaanbaatar\",\"Asia/Urumqi\",\"Asia/Ust-Nera\",\"Asia/Vladivostok\",\"Asia/Yakutsk\",\"Asia/Yangon\",\"Asia/Yekaterinburg\",\"Asia/Yerevan\"]",
        "type": "any",
        "enabled": true
    }
],
"_postman_variable_scope": "environment",
"_postman_exported_at": "2024-05-06T12:22:19.783Z",
"_postman_exported_using": "Postman/11.0.6"

}


Solution

  • This code can generate environment JSON files.

    The script reads a JSON file containing environment data.

    It iterates through each key-value pair, creating a new JSON object for each key.

    It writes each JSON object to a separate file, using the key as the prefix in the file name.

    Demo

    Save as demo.js

    const fs = require('fs');
    const { v4: uuidv4 } = require('uuid');
    
    const inputFileName = 'data.postman_environment.json'; // Read the input JSON file
    const inputFileContent = fs.readFileSync(inputFileName, 'utf8');
    
    const data = JSON.parse(inputFileContent); // Parse the JSON content
    
    // Iterate over each key in the JSON object
    data.values.forEach((item, index) => {
        const id = uuidv4(); // Generate a random UUID for each key
    
        // Create a new JSON object
        const outputData = {
            id,
            name: `${item.key}`,
            values: [item],
            _postman_variable_scope: data._postman_variable_scope,
            _postman_exported_at: data._postman_exported_at,
            _postman_exported_using: data._postman_exported_using
        };
    
        // Write each JSON object to a separate file
        const outputFileName = `${item.key}.postman_environment.json`;
        fs.writeFileSync(outputFileName, JSON.stringify(outputData, null, 4));
    
        console.log(`File '${outputFileName}' created.`);
    });
    

    Input environment JSON

    Save as data.postman_environment.json

    {
        "id": "6****8-1b78-48af-aff2-28******4565",
        "name": "Dev_C@of@g_@ile",
        "values": [
            {
                "key": "JobName",
                "value": "QATest123",
                "type": "any",
                "enabled": true
            },
            {
                "key": "JobIdentity",
                "value": "12356",
                "type": "any",
                "enabled": true
            },
            {
                "key": "JobData",
                "value": "[\"Asia/Almaty\",\"Asia/Amman\",\"Asia/Anadyr\",\"Asia/Aqtau\",\"Asia/Aqtobe\",\"Asia/Ashgabat\",\"Asia/Atyrau\",\"Asia/Baghdad\",\"Asia/Baku\",\"Asia/Bangkok\",\"Asia/Barnaul\",\"Asia/Beirut\",\"Asia/Bishkek\",\"Asia/Chita\",\"Asia/Choibalsan\",\"Asia/Colombo\",\"Asia/Damascus\",\"Asia/Dhaka\",\"Asia/Dili\",\"Asia/Dubai\",\"Asia/Dushanbe\",\"Asia/Famagusta\",\"Asia/Gaza\",\"Asia/Hebron\",\"Asia/Ho_Chi_Minh\",\"Asia/Hong_Kong\",\"Asia/Hovd\",\"Asia/Irkutsk\",\"Asia/Jakarta\",\"Asia/Jayapura\",\"Asia/Jerusalem\",\"Asia/Kabul\",\"Asia/Kamchatka\",\"Asia/Karachi\",\"Asia/Kathmandu\",\"Asia/Khandyga\",\"Asia/Kolkata\",\"Asia/Krasnoyarsk\",\"Asia/Kuching\",\"Asia/Macau\",\"Asia/Magadan\",\"Asia/Makassar\",\"Asia/Manila\",\"Asia/Nicosia\",\"Asia/Novokuznetsk\",\"Asia/Novosibirsk\",\"Asia/Omsk\",\"Asia/Oral\",\"Asia/Pontianak\",\"Asia/Pyongyang\",\"Asia/Qatar\",\"Asia/Qostanay\",\"Asia/Qyzylorda\",\"Asia/Riyadh\",\"Asia/Sakhalin\",\"Asia/Samarkand\",\"Asia/Seoul\",\"Asia/Shanghai\",\"Asia/Singapore\",\"Asia/Srednekolymsk\",\"Asia/Taipei\",\"Asia/Tashkent\",\"Asia/Tbilisi\",\"Asia/Tehran\",\"Asia/Thimphu\",\"Asia/Tokyo\",\"Asia/Tomsk\",\"Asia/Ulaanbaatar\",\"Asia/Urumqi\",\"Asia/Ust-Nera\",\"Asia/Vladivostok\",\"Asia/Yakutsk\",\"Asia/Yangon\",\"Asia/Yekaterinburg\",\"Asia/Yerevan\"]",
                "type": "any",
                "enabled": true
            }
        ],
        "_postman_variable_scope": "environment",
        "_postman_exported_at": "2024-05-06T12:22:19.783Z",
        "_postman_exported_using": "Postman/11.0.6"
    }
    

    Install dependency

    npm install uuid
    

    Run it

    node demo.js
    

    Result

    enter image description here

    JobData.postman_environment.json

    {
        "id": "0c51c1f6-25c8-4c52-b46c-bb2bf7761be0",
        "name": "JobData",
        "values": [
            {
                "key": "JobData",
                "value": "[\"Asia/Almaty\",\"Asia/Amman\",\"Asia/Anadyr\",\"Asia/Aqtau\",\"Asia/Aqtobe\",\"Asia/Ashgabat\",\"Asia/Atyrau\",\"Asia/Baghdad\",\"Asia/Baku\",\"Asia/Bangkok\",\"Asia/Barnaul\",\"Asia/Beirut\",\"Asia/Bishkek\",\"Asia/Chita\",\"Asia/Choibalsan\",\"Asia/Colombo\",\"Asia/Damascus\",\"Asia/Dhaka\",\"Asia/Dili\",\"Asia/Dubai\",\"Asia/Dushanbe\",\"Asia/Famagusta\",\"Asia/Gaza\",\"Asia/Hebron\",\"Asia/Ho_Chi_Minh\",\"Asia/Hong_Kong\",\"Asia/Hovd\",\"Asia/Irkutsk\",\"Asia/Jakarta\",\"Asia/Jayapura\",\"Asia/Jerusalem\",\"Asia/Kabul\",\"Asia/Kamchatka\",\"Asia/Karachi\",\"Asia/Kathmandu\",\"Asia/Khandyga\",\"Asia/Kolkata\",\"Asia/Krasnoyarsk\",\"Asia/Kuching\",\"Asia/Macau\",\"Asia/Magadan\",\"Asia/Makassar\",\"Asia/Manila\",\"Asia/Nicosia\",\"Asia/Novokuznetsk\",\"Asia/Novosibirsk\",\"Asia/Omsk\",\"Asia/Oral\",\"Asia/Pontianak\",\"Asia/Pyongyang\",\"Asia/Qatar\",\"Asia/Qostanay\",\"Asia/Qyzylorda\",\"Asia/Riyadh\",\"Asia/Sakhalin\",\"Asia/Samarkand\",\"Asia/Seoul\",\"Asia/Shanghai\",\"Asia/Singapore\",\"Asia/Srednekolymsk\",\"Asia/Taipei\",\"Asia/Tashkent\",\"Asia/Tbilisi\",\"Asia/Tehran\",\"Asia/Thimphu\",\"Asia/Tokyo\",\"Asia/Tomsk\",\"Asia/Ulaanbaatar\",\"Asia/Urumqi\",\"Asia/Ust-Nera\",\"Asia/Vladivostok\",\"Asia/Yakutsk\",\"Asia/Yangon\",\"Asia/Yekaterinburg\",\"Asia/Yerevan\"]",
                "type": "any",
                "enabled": true
            }
        ],
        "_postman_variable_scope": "environment",
        "_postman_exported_at": "2024-05-06T12:22:19.783Z",
        "_postman_exported_using": "Postman/11.0.6"
    }
    

    JobIdentity.postman_environment.json

    {
        "id": "279b06d1-1655-469f-8aef-c72681ac881f",
        "name": "JobIdentity",
        "values": [
            {
                "key": "JobIdentity",
                "value": "12356",
                "type": "any",
                "enabled": true
            }
        ],
        "_postman_variable_scope": "environment",
        "_postman_exported_at": "2024-05-06T12:22:19.783Z",
        "_postman_exported_using": "Postman/11.0.6"
    }
    

    JobName.postman_environment.json

    {
        "id": "9dcbc812-5e75-4c34-a033-28f8c638352a",
        "name": "JobName",
        "values": [
            {
                "key": "JobName",
                "value": "QATest123",
                "type": "any",
                "enabled": true
            }
        ],
        "_postman_variable_scope": "environment",
        "_postman_exported_at": "2024-05-06T12:22:19.783Z",
        "_postman_exported_using": "Postman/11.0.6"
    }
    

    Edit

    If you want to save specific key only, add an if statement.

    data.values.forEach((item, index) => {
        if (item.key == 'JobData') {
            const id = uuidv4(); // Generate a random UUID for each key
    
            // Create a new JSON object
            const outputData = {
                id,
                name: `${item.key}`,
                values: [item],
                _postman_variable_scope: data._postman_variable_scope,
                _postman_exported_at: data._postman_exported_at,
                _postman_exported_using: data._postman_exported_using
            };
        
            // Write each JSON object to a separate file
            const outputFileName = `${item.key}.postman_environment.json`;
            fs.writeFileSync(outputFileName, JSON.stringify(outputData, null, 4));
        
            console.log(`File '${outputFileName}' created.`);
        }
    });
    

    It will save only JobData.postman_environment.json.