2017-02-15 13 views
-1

Пожалуйста, помогите мне создать рекурсивную функцию для преобразования JSON из данного формата в JSON ниже. Я немного потерял, как это сделать. Благодарим за помощь! Ниже приведен образец формата JSON, который у меня есть и нужно преобразовать.конвертировать JSON в другой формат JSON с рекурсией

Это обеспечивается:

{ 
    "context": { 
    "device":   { 
     "localeCountryCode": "AX", 
     "datetime":   "3047-09-29T07:09:52.498Z" 
    }, 
    "currentLocation": { 
     "country": "KM", 
     "lon":  -78789486, 
    } 
    } 
} 

Это то, что я пытаюсь получить:

{ 
    "label": "context", 
    "children": [ 
    { 
     "label": "device", 
     "children": [ 
     { 
      "label": "localeCountryCode" 
     }, 
     { 
      "label": "datetime" 
     } 
     ] 
    }, 
    { 
     "label": "currentLocation", 
     "children": [ 
     { 
      "label": "country" 
     }, 
     { 
      "label": "lon" 
     } 
     ] 
    } 
    ] 
} 
+3

, что данный формат? Мы не можем ответить на этот вопрос без вашего формата и формата, который вы хотите. – zack6849

+1

Вы, похоже, забыли включить соответствующую информацию. Укажите пример данных, с которыми работаете. – Lix

+0

Спасибо, ребята, я добавил соответствующую информацию. – Eden1971

ответ

0

Вы можете проверить, является ли объект truthy и получить ключи от объекта. Затем верните для каждой клавиши объект с меткой и дочерним свойством с результатом рекурсивного вызова функции.

function transform(o) { 
 
    if (o && typeof o === 'object') { 
 
     return Object.keys(o).map(function (k) { 
 
      var children = transform(o[k]); 
 
      return children ? { label: k, children: children } : { label: k }; 
 
     }); 
 
    } 
 
} 
 

 
var object = { context: { device: { localeCountryCode: "AX", datetime: "3047-09-29T07:09:52.498Z" }, currentLocation: { country: "KM", lon: -78789486, } } }, 
 
    result = transform(object); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Большое спасибо! – Eden1971

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