user3719363
user3719363

Reputation: 39

how to create json from key value pair of array in angular2

    "dynaModel": [
{
  "map": {
    "UNIT/SUBUNIT": "EAS",
    "SUBUNIT/ISU/GEO": "Africa",
    "'APR-16'_REVENUEUSD-$": "$805,298",
    "'APR-16'_COSTUSD-$": "$701,026",
    "'APR-16'_GMINR-RSUSD-$": 12.95,
    "'Total'_REVENUEUSD-$": "$805,298",
    "'Total'_COSTUSD-$": "$701,026",
    "'Total'_GMINR-RSUSD-$": 12.95
  }
},
{
  "map": {
    "UNIT/SUBUNIT": "fgdfg",
    "SUBUNIT/ISU/GEO": "dfgdfg",
    "'APR-16'_REVENUEUSD-$": "$58,",
    "'APR-16'_COSTUSD-$": "$32,",
    "'APR-16'_GMINR-RSUSD-$": 43.98,
    "'Total'_REVENUEUSD-$": "$58,",
    "'Total'_COSTUSD-$": "$32,",
    "'Total'_GMINR-RSUSD-$": 43
  }
},

.... .....

How to convert it into the following below format using angular 2

   output= [
    {
     "UNIT/SUBUNIT": "hjgh",
    "SUBUNIT/ISU/GEO": "ghjg",
    "'APR-16'_REVENUEUSD-$": "$805",
    "'APR-16'_COSTUSD-$": "$70",
    "'APR-16'_GMINR-RSUSD-$": 12.95,
    "'Total'_REVENUEUSD-$": "$80",
    "'Total'_COSTUSD-$": "$701",
    "'Total'_GMINR-RSUSD-$": 12
},
{
  "UNIT/SUBUNIT": "jjghjhj",
    "SUBUNIT/ISU/GEO": "hjgh",
    "'APR-16'_REVENUEUSD-$": "$58,",
    "'APR-16'_COSTUSD-$": "$32,",
    "'APR-16'_GMINR-RSUSD-$": 43.98,
    "'Total'_REVENUEUSD-$": "$58,0",
    "'Total'_COSTUSD-$": "$32,",
    "'Total'_GMINR-RSUSD-$": 43.98
},

.. .. ..

];

I am recently tried as follows I extract key value pair from the first json file using following code and then push each pair in the jsonObject array.

  jsonObject = []; 

  for(let isugeo of this.responseStatus.dynaModel){     
     for( let isugeomap of this.generateArray(isugeo.map)){
       this.jsonObject.push(isugeomap.key+':'+"'" +isugeomap.value+"'");       
     }    console.log('Request Completed' + 
    JSON.stringify(this.jsonObject));
    };


    generateArray(responseStatus){
     return Object.keys(responseStatus).map((key) => { return {key:key, value:responseStatus[key]}});
 } 

but it doesn't give me the correct format any help how i will proceed

Upvotes: 0

Views: 1276

Answers (2)

Heikki Pitkänen
Heikki Pitkänen

Reputation: 38

dynaModel is an array of objects so you can loop throuh it and pick map property (which is an object also) of every object in and put that object into output array.

let response = {
  "dynaModel": [
    {
      "map": {
        "UNIT/SUBUNIT": "EAS",
        "SUBUNIT/ISU/GEO": "Africa",
        "'APR-16'_REVENUEUSD-$": "$805,298",
        "'APR-16'_COSTUSD-$": "$701,026",
        "'APR-16'_GMINR-RSUSD-$": 12.95,
        "'Total'_REVENUEUSD-$": "$805,298",
        "'Total'_COSTUSD-$": "$701,026",
        "'Total'_GMINR-RSUSD-$": 12.95
      }
    },
    {
      "map": {
        "UNIT/SUBUNIT": "fgdfg",
        "SUBUNIT/ISU/GEO": "dfgdfg",
        "'APR-16'_REVENUEUSD-$": "$58,",
        "'APR-16'_COSTUSD-$": "$32,",
        "'APR-16'_GMINR-RSUSD-$": 43.98,
        "'Total'_REVENUEUSD-$": "$58,",
        "'Total'_COSTUSD-$": "$32,",
        "'Total'_GMINR-RSUSD-$": 43
      }
    }
  ]
}

let output = new Array();

for (let object of response.dynaModel) {
  output.push(object.map);
}

console.log(output); 

prints:

[ { 'UNIT/SUBUNIT': 'EAS',
'SUBUNIT/ISU/GEO': 'Africa',
'\'APR-16\'_REVENUEUSD-$': '$805,298',
'\'APR-16\'_COSTUSD-$': '$701,026',
'\'APR-16\'_GMINR-RSUSD-$': 12.95,
'\'Total\'_REVENUEUSD-$': '$805,298',
'\'Total\'_COSTUSD-$': '$701,026',
'\'Total\'_GMINR-RSUSD-$': 12.95 },
{ 'UNIT/SUBUNIT': 'fgdfg',
'SUBUNIT/ISU/GEO': 'dfgdfg',
'\'APR-16\'_REVENUEUSD-$': '$58,',
'\'APR-16\'_COSTUSD-$': '$32,',
'\'APR-16\'_GMINR-RSUSD-$': 43.98,
'\'Total\'_REVENUEUSD-$': '$58,',
'\'Total\'_COSTUSD-$': '$32,',
'\'Total\'_GMINR-RSUSD-$': 43 } ]

Upvotes: 1

LLai
LLai

Reputation: 13396

I would use the js map method (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)

let output = this.responseStatus.dynaModel.map(item => item.map);

Upvotes: 2

Related Questions