Google Apps Script를 사용하여 플랫 JSON 배열을 중첩 된 JSON으로 변환하는 방법은 무엇입니까?

Timogavk

독립형 Google 스크립트 프로젝트가 있습니다. 일부 API를 통해 가져 오기에서 플랫 JSON 답변을 얻었습니다. 실제로 중첩되어야하지만 그렇지 않습니다. 내 JSON에는 중첩 대신 레벨 번호가 있습니다. 예를 들면 :

 [ { level: 1, first_name: 'Sammy', last_name: 'Snow', cloth_num: 8, cloth: null, color: null, day: null, sales: 1000},
              { level: 2, first_name: null, last_name: null, cloth_num: 3, cloth: 'shirt', color: 'red', day: null, sales: 300},
              { level: 3, first_name: null, last_name: null, cloth_num: 1, cloth: null, color: null, day: 1, sales: 100},
              { level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 200},
              { level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'jeans', color: 'blue', day: null, sales: 700},
              { level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
              { level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
              { level: 1, first_name: 'Danny', last_name: 'Crow', cloth_num: 15, cloth: null, color: null, day: null, sales: 2000},
              { level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 't-shirt', color: 'red', day: null, sales: 800},
              { level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 1, sales: 500},
              { level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 2, sales: 300},
              { level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'hat', color: 'blue', day: null, sales: 700},
              { level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
              { level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 400},
              { level: 2, first_name: null, last_name: null, cloth_num: 5, cloth: 'socks', color: 'blue', day: null, sales: 500},
              { level: 3, first_name: null, last_name: null, cloth_num: 2, cloth: null, color: null, day: 1, sales: 300},
              { level: 3, first_name: null, last_name: null, cloth_num: 3, cloth: null, color: null, day: 2, sales: 200} ]

두 번째 수준을 첫 번째 수준에 중첩하는 스크립트를 작성했습니다.

function convertFlat(dataq) {
  let map = new Map()
  let x = dataq.forEach(x => {if (x.level === 1) x.next_level=[], map.set(x.first_name,x)})
  
  for(let i = 0; i < dataq.length; i++){
    if(dataq[i].level === 1) { 
    l = map.get(dataq[i].first_name);  
    continue;
    }
    else l.next_level.push(dataq[i])    
  }
  console.log([...map.values()])
}

세 번째 수준을 두 번째 수준에 중첩하려면 어떻게해야합니까? 저는 Google Apps Script를 처음 사용하며 두 번째 및 세 번째 수준에서이 루프를 반복하는 방법을 모릅니다.

iAmOren

내 자신을 저항 할 수 없었습니다 ... 여기에 제안 된 코드가 있습니다.

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

arr고객 수준에서 개체를 보유하고 고객
objL1, objL2, objL3, 옷 및 항목에 대한 정보를 각각 보유합니다. 는 아닌
prev_level것으로 시작 하고 cusotmer / 언제 . 참고 : 플랫 json 작업을 마쳤을 때 푸시되지 않은 아직 구성되지 않은 마지막 cusotmer / - " " 를 푸시해야 합니다. 정보가 전혀 없었습니다. 각각에서 우리는 관련 속성을 수집하고 그 배열에 한 단계 위로 밀어 넣습니다. 이것이 의미가 있기를 바랍니다!undefined3pushObjL1arr
ObjL1if
case

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관