转置 JSON 数据 [英] Transposing JSON data

查看:48
本文介绍了转置 JSON 数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道有这方面的线索,但我不明白,可能需要有关我的 json 文件的帮助.我想将一个 json 绑定到我的 SAPUI5 控件之一,但我没有将其转换.

I know there are threads on this, but I dont get it and might need help on my json file. I want to bind a json to one of my SAPUI5 controls, but I dont get it converted.

问题是,我的数据已经在前端了,所以我不想进行第二次后端调用,我需要转置我的 json 数据.

The thing is, I got my data already in the frontend, so I dont want to make a second backend call and I need to transpose my json data.

这是我得到的,列是 Mon01 .. 等

This is what I got, columns are Mon01 .. etc.

    Mon01   Mon02   Mon03   Mon04
0   03/2015 04/2015 05/2015 06/2015
1   1       3       5       21
2   2       4       6       22
3   10      11     12       23

这就是我想要的:

    Mon01   Mon02   Mon03   Mon04
0   03/2015 1       2       10
1   04/2015 3       4       11
2   05/2015 5       6       12
3   06/2015 21      22      23

或者我得到的 JSON 格式:

Or in JSON what I got:

d : 
   [
      0: {
         Mon01: "03/2015",
         Mon02: "04/2015",
         Mon03: "05/2015",
      },
      1: {
         Mon01: "1,0",
         Mon02: "3,0",
         Mon03: "5,0",
 },
      2: {
         Mon01: "2,0",
         Mon02: "4,0",
         Mon03: "6,0",
         Mon04: "",
         Mon05: "",
         Mon06: "",
 },
      3: {
         Mon01: "10,0",
         Mon02: "11,0",
         Mon03: "12,0",
         Mon04: "",
         Mon05: "",
         Mon06: "",
 },
      length: 3
   ]

和我想要的 JSON 格式:

and in JSON what I want:

d : 
   [
      0: {
         Mon01: "03/2015",
         Mon02: "1,0",
         Mon03: "2,0",
         Mon04: "3,0",
         Mon05: "",
         Mon06: "",
     },
      1: {
         Mon01: "04/2015",
         Mon02: "3,0",
         Mon03: "4,0",
         Mon04: "11,0",
         Mon05: "",
         Mon06: "",
 },
      2: {
         Mon01: "05/2015",
         Mon02: "5,0",
         Mon03: "6,0",
         Mon04: "12,0",
         Mon05: "",
         Mon06: "",
 },
      length: 3
   ]

我所做的不是最好的方法(但有效)移动每一行的单一方法:

What I've done which is not pretty the best way (but working) a single method moving each line:

transpose : function(oTreeAll) {

    var oTreeNew = new Array();
    var oTreeSingle = {};

oTreeSingle.Mon01 = oTreeAll[0].Mon01.replace(',', '.');
oTreeSingle.Mon02 = oTreeAll[1].Mon01.replace(',', '.');
oTreeSingle.Mon03 = oTreeAll[2].Mon01.replace(',', '.');
oTreeSingle.Mon04 = oTreeAll[3].Mon01.replace(',', '.');
oTreeNew.push(oTreeSingle);

var oTreeSingle1 = {};
oTreeSingle1.Mon01 = oTreeAll[0].Mon02.replace(',', '.');
oTreeSingle1.Mon02 = oTreeAll[1].Mon02.replace(',', '.');
oTreeSingle1.Mon03 = oTreeAll[2].Mon02.replace(',', '.');
oTreeSingle1.Mon04 = oTreeAll[3].Mon02.replace(',', '.');
oTreeNew.push(oTreeSingle1);

var oTreeSingle2 = {};
oTreeSingle2.Mon01 = oTreeAll[0].Mon03.replace(',', '.');
oTreeSingle2.Mon02 = oTreeAll[1].Mon03.replace(',', '.');
oTreeSingle2.Mon03 = oTreeAll[2].Mon03.replace(',', '.');
oTreeSingle2.Mon04 = oTreeAll[3].Mon03.replace(',', '.');
oTreeNew.push(oTreeSingle2);

var data = {
    "d" : {
        "results" : oTreeNew,
    }
};

    return data;
},

你会怎么做?我已经阅读了很多关于地图函数的内容,但我不明白工作方式或如何使其适应我的 json,任何人都可以帮助我吗?非常感谢!

transpose : function(oTreeAll) {

    var keys = [];
    var i = 0;
    for ( var key in oTreeAll[i]) {
        keys.push(key);
    }

    console.log(keys);

    var newObj = {
        d : []
    };

    newObj['length'] = oTreeAll.length;
    for (var k = 0; k < oTreeAll.length; k++) {
        var obj = {};
        for ( var cnt in keys) {
            obj[keys[cnt]] = "";
        }
        newObj.d.push(obj);
    }

    for (var k = 0; k < oTreeAll.length; k++) {
        for (var j = 0; j < oTreeAll.length; j++) {
            newObj.d[k][keys[j]] = oTreeAll[j][keys[k]];
        }
    }

    console.log(newObj);
            return newObj;

},

推荐答案

请在下面找到代码:

var data = {d : 
[
  {
     Mon01: "03/2015",
     Mon02: "04/2015",
     Mon03: "05/2015",
  },
  {
     Mon01: "1,0",
     Mon02: "3,0",
     Mon03: "5,0",
  },
  {
     Mon01: "2,0",
     Mon02: "4,0",
     Mon03: "6,0",
     Mon04: "",
     Mon05: "",
     Mon06: "",
  },
  {
     Mon01: "10,0",
     Mon02: "11,0",
     Mon03: "12,0",
     Mon04: "",
     Mon05: "",
     Mon06: "",
}
],
        length: 3};

//console.log(data.d[0]);
var keys = [];
for(var key in data.d[data.length]){
   //console.log(key);
  keys.push(key);
}

var newObj = {d:[]};
newObj['length'] = data.length;
for(var k =0;k<data.length;k++){
  var obj = {};
  for(var cnt in keys){
    obj[keys[cnt]] = "";
  }
  newObj.d.push(obj);
 }
for(var k =0;k<data.length;k++){
   //var obj = {};
  //console.log(k);
  for(var j=0;j<data.length;j++){
    newObj.d[k][keys[j]] = data.d[j][keys[k]];
  }
}
console.log(newObj);

这篇关于转置 JSON 数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆