2015-04-10 2 views
-1

Этот вопрос кажется странным, но я найти его трудно преобразовать ниже заданного JSONИзменение структуры объекта JSON

[ 
    { 
     "id": 2, 
     "name": "NP", 
     "description": "North Pit", 
     "boxList": [ 
      { 
       "id": 3, 
       "name": "Box1", 
       "description": "First Box",    
       "locationId": 1, 
       "benches": [ 
        { 
         "id": 1, 
         "name": "Sample Bench", 
         "description": "Sample Bench" 
        }, 
        { 
         "id": 2, 
         "name": "Sample Bench1", 
         "description": "Sample Bench1" 
        } 
       ] 
      }, 
      { 
       "id": 6, 
       "name": "Box2", 
       "description": "Second Box",    
       "locationId": 1, 
       "benches": [ 
        { 
         "id": 1, 
         "name": "Sample Bench", 
         "description": "Sample Bench" 
        }, 
        { 
         "id": 2, 
         "name": "Sample Bench1", 
         "description": "Sample Bench1" 
        } 
       ] 
      } 
     ] 
    } 
] 

в

[ 
    { 
     "pit": { 
      "id": 1, 
      "name": "SouthPit", 
      "description": "South Description" 
     }, 
     "boxList": [ 
      { 
       "boxes": { 
        "id": 1, 
        "name": "Sample Box", 
        "description": "Sample Box" 
       }, 
       "benchList": [ 
        { 
         "id": 2, 
         "name": "Sample Bench1", 
         "description": "Sample Bench" 
        } 
       ] 
      }, 
      { 
       "boxes": { 
        "id": 2, 
        "name": "Sample Box", 
        "description": "Sample Box" 
       }, 
       "benchList": [ 
        { 
         "id": 1, 
         "name": "Sample Bench", 
         "description": "Sample Bench" 
        } 
       ] 
      } 
     ] 
    } 
] 

, где каждый объект представляет собой повторяющийся объект, где может быть несколько ящиков для одной ямы или несколько скамеек для ямы. Может кто-нибудь бросить какой-то свет. Я попытался построить JSON

function constructPitData(data) { 
       var firstLevel; 
       var constructedPitDetails = []; 
       for (var i = 0; i < data.length; i++) { 
        firstLevel= { 
         id:data[i].pit.id, 
         name: data[i].pit.name, 
         desc: data[i].pit.description, 
         locId: data[i].pit.mineLocationId, 
         boxDetails:[] 
        } 
        constructedPitDetails.push(firstLevel); 
        constructBoxDetails(data, firstLevel); 
       } 
      } 

      function constructBoxDetails(data, pit) { 
       var boxFirstLevel; 
       var constructedBoxDetails = []; 
       for (var j = 0; j < data.length; j++) { 
        if (pit.id === data[j].pit.id) { 
         var newBox = { 

         } 
        } 
       } 
      } 
+2

@ Манодж, что вы делали до сих пор ? – ozil

+0

, чтобы вы начали, ваш первый шаг будет для каждого элемента входного массива: 'for (var i = 0, l = ain.length; i

ответ

1

вы должны перебрать ямы и ящики

ваш первый шаг должен был бы для каждого элемента во входном массиве,

for (var i=0,l=inputarray.length; i<l; i++) { 

создать новый объект a

var newpit = {}; 

и перейти в его pit поле содержимое элемента

newpit.pit = inputarray[i]; 

затем переместить boxlist из поля пит

newpit.boxList = newpit.pit.boxList; 
delete newpit.pit.boxList; 

и, наконец, нажать на объект в выходном массиве

outputarray.push(newpit); 

это заканчивается шаг 1

Теперь вам также нужно исправить boxList, так что код аналогичных движений для каждой коробки в boxl IST

for (var j=0,n=newpit.pit.boxList.length; j<n; j++) { 

создать новый ящик элемент

var newbox = {}; 

и переместите boxlist в boxes поле

newbox.boxes = newpit.pit.boxList[j]; 

и скамейки из за boxes и в benches поле

newbox.benches = newbox.boxes.benches; 
delete newbox.boxes.benches; 

наконец подтолкнуть этот новый объект

newpit.boxList.push(newbox); 

и это заканчивается шаг два


так, положить все части вместе ...

var outputarray = []; 
    for (var i=0,l=inputarray.length; i<l; i++) { 
     var newpit = {}; 
     newpit.pit = inputarray[i]; 
     newpit.boxList = []; 

     for (var j=0,n=newpit.pit.boxList.length; j<n; j++) { 
     var newbox = {}; 
     newbox.boxes = newpit.pit.boxList[j]; 
     newbox.benches = newbox.boxes.benches; 
     delete newbox.boxes.benches; 
     newpit.boxList.push(newbox);  
     } 
     delete newpit.pit.boxList; 
     outputarray.push(newpit); 

    } 
Смежные вопросы