简体   繁体   中英

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

我将使用js映射方法( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

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

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 } ]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM