Javascript 如何使用GoogleApps脚本将平面JSON数组转换为嵌套JSON?
我有一个独立的谷歌脚本项目。 我通过一些API从fetch得到了一个简单的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,日
[{级别: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……再说一遍,这是什么“新行”?“分隔”?谢谢。暂时不适合我……祝你好运!请你投票,谢谢,然后选择我的答案好吗?