2016-04-18 14 views
2

Я пытаюсь преобразовать ниже JSON в другой формат, в котором в reultant JSON dosen't содержат valueChainEntity имя объекта, а также я хочу, чтобы удалить входы и выходы массив .Примечание, что структура является родителем ребенка отношение и входы и выходы массива могут присутствовать внутри массива детали на любой level.Even в всех уровнях (но только внутри элементов массива)Преобразование JSON из одного формата в другой

var inputJSON = [ 
    { 
     "valueChainEntity":{ 
      "id":308, 
      "valueChainEntityId":48, 
      "items":[ 
       { 
        "valueChainEntity":{ 
         "id":309, 
         "valueChainEntityId":49, 
         "items":[ 
          { 
           "valueChainEntity":{ 
            "id":312, 
            "valueChainEntityId":50, 
            "items":[ 

            ] 
           }, 
           "inputs":[ 
            { 
             "id":312, 
             "valueChainEntityId":50, 
             "items":[ 

             ] 
            } 
           ], 
           "outputs":[ 
            { 
             "id":313, 
             "valueChainEntityId":50 
            } 
           ] 
          } 
         ] 
        } 
       } 
      ] 
     } 
    } 
] 

var outputJSON= [ 

    { 
     "id":308, 
     "valueChainEntityId":48, 
     "items":[ 
      { 
       "id":309, 
       "valueChainEntityId":49, 
       "items":[ 
        { 
         "id":312, 
         "valueChainEntityId":50, 
         "items":[ 

         ] 
        } 
       ] 
      } 
     ] 
    } 
] 

Мой код:

inputJSON.forEach((item) => { 
        return item.valueChainEntity; 
       }); 
//which will traverse only through the first level and will not delete the **inputs** and **outputs** array.. 
+0

Вы просто хотите отказаться от атрибутов 'input' и' output'? – 11thdimension

+1

Разберите его, удалите, что хотите, и верните его в строку ... –

+0

yes @ 11thdimension и нужно удалить имя valueChainEntity с каждого уровня и отобразить содержимое, поскольку оно – forgottofly

ответ

1

Смотрите, если выполнение следующих работ:

function parseInputJSON(inp) { 
 
     return inp.map(function (item) { 
 
      return getValueChainEntity(item); 
 
     }); 
 
    } 
 

 
function getValueChainEntity(item) { 
 
    if (item['valueChainEntity'] != undefined) { 
 
    var valueChainEntity = item.valueChainEntity; 
 
    valueChainEntity.items = parseInputJSON(valueChainEntity.items); 
 
    return valueChainEntity; 
 
    } 
 
    return item; 
 
} 
 

 

 
var inputJSON=[ 
 
    { 
 
     "valueChainEntity": { 
 
      "id": 308, 
 
      "valueChainEntityId": 48, 
 
      "items": [ 
 
       { 
 
        "valueChainEntity": { 
 
         "id": 309, 
 
         "valueChainEntityId": 49, 
 
         "items": [ 
 
          { 
 
           "valueChainEntity": { 
 
            "id": 312, 
 
            "valueChainEntityId": 50, 
 
            "items": [] 
 
           }, 
 
           "inputs": [ 
 
            { 
 
             "id": 312, 
 
             "valueChainEntityId": 50, 
 
             "items": [] 
 
            } 
 
           ], 
 
           "outputs": [ 
 
            { 
 
             "id": 313, 
 
             "valueChainEntityId": 50 
 
            } 
 
           ] 
 
          } 
 
         ] 
 
        } 
 
       } 
 
      ] 
 
    } 
 
}]; 
 

 
var newInput = parseInputJSON(inputJSON); 
 

 
document.getElementById("json").innerHTML = JSON.stringify(newInput, undefined, 4);
<pre id="json"></pre>

4

Вот еще один способ, который работает ..

Пример кода

function populateChildrenRecursively(outputTypeId, valueChainEntities, parentValueChainEntity) { 
     for (var i = 0; i < valueChainEntities.length; i++) { 
      if (valueChainEntities[i].valueChainEntity.valueChainEntityId != parentValueChainEntity.valueChainEntity.valueChainEntityId && hasInput(outputTypeId, valueChainEntities[i].inputs)) { 
       parentValueChainEntity.valueChainEntity.items.push(valueChainEntities[i]); 
       if (valueChainEntities[i].outputs.length > 0) { 
        valueChainEntities[i].valueChainEntity.items = []; 
        for (var j = 0; j < valueChainEntities[i].outputs.length; j++) { 
         populateChildrenRecursively(valueChainEntities[i].outputs[j].outputTypeId, valueChainEntities, valueChainEntities[i]); 
        } 
       } 
      } 
     } 
    } 

https://plnkr.co/edit/d2wtXcaU37quthBjgrCu?p=preview

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