Javascript 如何使用GoogleApps脚本将平面JSON数组转换为嵌套JSON?

Javascript 如何使用GoogleApps脚本将平面JSON数组转换为嵌套JSON?,javascript,json,google-apps-script,Javascript,Json,Google Apps Script,我有一个独立的谷歌脚本项目。 我通过一些API从fetch得到了一个简单的JSON答案。实际上它应该是嵌套的,但不是。 我的JSON具有级别编号,而不是嵌套。例如: [{级别:1,名字:“萨米”,姓氏:“雪”,布料数量:8,布料:空,颜色:空,日期:空,销售额:1000}, {级别:2,名字:null,姓氏:null,布料编号:3,布料:“衬衫”,颜色:“红色”,日期:null,销售额:300}, {级别:3,名字:null,姓氏:null,布料编号:1,布料编号:null,颜色:null,日

我有一个独立的谷歌脚本项目。 我通过一些API从fetch得到了一个简单的JSON答案。实际上它应该是嵌套的,但不是。 我的JSON具有级别编号,而不是嵌套。例如:

[{级别:1,名字:“萨米”,姓氏:“雪”,布料数量:8,布料:空,颜色:空,日期:空,销售额:1000},
{级别:2,名字:null,姓氏:null,布料编号:3,布料:“衬衫”,颜色:“红色”,日期:null,销售额:300},
{级别:3,名字:null,姓氏:null,布料编号:1,布料编号:null,颜色:null,日期:1,销售额:100},
{级别:3,名字:null,姓氏:null,布料编号:2,布料编号:null,颜色:null,日期:2,销售额:200},
{级别:2,名字:null,姓氏:null,布料编号:5,布料:“牛仔裤”,颜色:“蓝色”,日期:null,销售额:700},
{级别:3,名字:null,姓氏:null,布料数量:2,布料:null,颜色:null,日期:1,销售额:300},
{level:3,first_name:null,last_name:null,cloth_num:3,cloth:null,color:null,day:2,sales:400},
{级别:1,名字:'Danny',姓氏:'Crow',布料编号:15,布料:空,颜色:空,日期:空,销售额:2000},
{级别:2,名字:空,姓氏:空,布料编号:5,布料:“t恤”,颜色:“红色”,日期:空,销售额:800},
{level:3,first_name:null,last_name:null,cloth_num:3,cloth:null,color:null,day:1,sales:500},
{级别:3,名字:null,姓氏:null,布料编号:2,布料编号:null,颜色:null,日期:2,销售额:300},
{级别:2,名字:null,姓氏:null,布料编号:5,布料:“帽子”,颜色:“蓝色”,日期:null,销售额:700},
{级别:3,名字:null,姓氏:null,布料数量:2,布料:null,颜色:null,日期:1,销售额:300},
{level:3,first_name:null,last_name:null,cloth_num:3,cloth:null,color:null,day:2,sales:400},
{级别:2,名字:null,姓氏:null,布料编号:5,布料:“袜子”,颜色:“蓝色”,日期:null,销售额:500},
{级别:3,名字:null,姓氏:null,布料数量:2,布料:null,颜色:null,日期:1,销售额:300},

{level:3,first\u name:null,last\u name:null,cloth\u num:3,cloth:null,color:null,day:2,sales:200}]
无法抗拒自己。。。以下是我建议的代码:

function unFlat(fj) {
  var arr=[];
  var objL1, objL2, objL3;
  var prev_level;
  for(var i=0; i<fj.length;i++) {
    var obj=fj[i];
    switch(obj.level) {
      case 3:
        objL3={};
        objL3.cloth_num=obj.cloth_num;
        objL3.day=obj.day;
        objL3.sales=obj.sales;
        objL2.items.push(objL3);
        prev_level=3;
        break;
      case 2:
        objL2={};
        objL2.cloth_num=obj.cloth_num;
        objL2.cloth=obj.cloth;
        objL2.color=obj.color;
        objL2.sales=obj.sales;
        objL2.items=[];
        objL1.cloths.push(objL2);
        prev_level=2;
        break;
      case 1:
        if(prev_level==3) arr.push(objL1);
        objL1={};
        objL1.first_name=obj.first_name;
        objL1.last_name=obj.last_name;
        objL1.cloth_num=obj.cloth_num;
        objL1.sales=obj.sales;
        objL1.cloths=[];
        prev_level=1;
        break;
    }
  }
  if(fj.length) arr.push(objL1);
  return arr;
}
功能取消平面(fj){
var-arr=[];
变量objL1、objL2、objL3;
var前期水平;

对于(var i=0;iPracce“recursive”函数。为json示例添加完整的预期输出。请共享预期输出谢谢您的回复!它可以工作。我如何修改它以获得新行分隔符?不客气!“新行”?“分隔符”?请解释。你可以提到我……我还不熟悉Blob和文件I/o……再说一遍,这是什么“新行”?“分隔”?谢谢。暂时不适合我……祝你好运!请你投票,谢谢,然后选择我的答案好吗?