Преобразовать вложенную структуру JSON в определенный формат объекта в JavaScript? ⇐ Javascript
Преобразовать вложенную структуру JSON в определенный формат объекта в JavaScript?
У меня есть такая входная структура JSON:
{ "список_разрешений": [ { «идентификатор»: 0, "модуль": "Производство", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: ложь, «печать»: правда, "permission_details": [ { «идентификатор»: 0, "sub_module": "Шаблон формулы", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда } ] }, { "идентификатор": 1, "модуль": "Настройка", «вид»: правда, «добавить»: ложь, «редактировать»: правда, «удалить»: ложь, «печать»: правда, "permission_details": [ { "rowId": 0, «идентификатор»: 0, "sub_module": "Пользователь", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда }, { "rowId": 1, "идентификатор": 1, "sub_module": "Роль", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда } ] } ] } Мне нужно преобразовать эту структуру JSON в следующий формат:
{ производство: { этикетка: «Производство», разрешения: [ "вид", "добавлять", "редактировать", "удалить", "Распечатать" ], ребенок: { формула_шаблон: { метка: «Шаблон формулы», разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] }, } }, параметр: { метка: «Настройка», разрешения: [ "вид", "добавлять", "редактировать", "удалить", "Распечатать" ], ребенок: { пользователь: { метка: «Пользователь», разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] }, роль: { ярлык: "Роль", разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] } } } } Я пытался написать код JavaScript для реализации этого преобразования, но столкнулся с некоторыми проблемами. Вот что я уже пытался сделать:
data.reduce( (согл.: { [ключ: строка]: любой }, массив: любой) => { константное родительское разрешение = [ 'вид', 'добавлять', 'редактировать', 'удалить', 'Распечатать', ] .map((действие: строка) => массив[действие] && действие) .filter(логическое значение); const childPermission = array.permission_details.map( (под: любой) => { константный ключ = sub.sub_module .toLowerCase() .расколоть(' ') .присоединиться('_'); константные разрешенияArr = [ 'вид', 'добавлять', 'редактировать', 'удалить', 'Распечатать', ] .map((act: string) => sub[act] && act) .filter(логическое значение); возвращаться { [ключ]: { метка: sub.sub_module, разрешения: разрешенияArr, }, }; }, ); const key = array.module.toLowerCase().split(' ').join('_'); акк[ключ] = { метка: массив.модуль, разрешения: родительское разрешение, ребенок: дочернее разрешение, }; возврат акк; }, {}, ); Как я могу изменить эту часть? Возможно, в будущем будет добавлено что-то новое или что-то изменится. [ 'просмотреть', 'добавить', 'редактировать', 'удалить', 'распечатать', ]
Я буду признателен за любые рекомендации и помощь в осуществлении этой трансформации. Спасибо!
У меня есть такая входная структура JSON:
{ "список_разрешений": [ { «идентификатор»: 0, "модуль": "Производство", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: ложь, «печать»: правда, "permission_details": [ { «идентификатор»: 0, "sub_module": "Шаблон формулы", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда } ] }, { "идентификатор": 1, "модуль": "Настройка", «вид»: правда, «добавить»: ложь, «редактировать»: правда, «удалить»: ложь, «печать»: правда, "permission_details": [ { "rowId": 0, «идентификатор»: 0, "sub_module": "Пользователь", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда }, { "rowId": 1, "идентификатор": 1, "sub_module": "Роль", «вид»: правда, «добавить»: правда, «редактировать»: правда, «удалить»: правда, «печать»: правда } ] } ] } Мне нужно преобразовать эту структуру JSON в следующий формат:
{ производство: { этикетка: «Производство», разрешения: [ "вид", "добавлять", "редактировать", "удалить", "Распечатать" ], ребенок: { формула_шаблон: { метка: «Шаблон формулы», разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] }, } }, параметр: { метка: «Настройка», разрешения: [ "вид", "добавлять", "редактировать", "удалить", "Распечатать" ], ребенок: { пользователь: { метка: «Пользователь», разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] }, роль: { ярлык: "Роль", разрешения: [ "вид", "удалить", "добавлять", "редактировать", "Распечатать" ] } } } } Я пытался написать код JavaScript для реализации этого преобразования, но столкнулся с некоторыми проблемами. Вот что я уже пытался сделать:
data.reduce( (согл.: { [ключ: строка]: любой }, массив: любой) => { константное родительское разрешение = [ 'вид', 'добавлять', 'редактировать', 'удалить', 'Распечатать', ] .map((действие: строка) => массив[действие] && действие) .filter(логическое значение); const childPermission = array.permission_details.map( (под: любой) => { константный ключ = sub.sub_module .toLowerCase() .расколоть(' ') .присоединиться('_'); константные разрешенияArr = [ 'вид', 'добавлять', 'редактировать', 'удалить', 'Распечатать', ] .map((act: string) => sub[act] && act) .filter(логическое значение); возвращаться { [ключ]: { метка: sub.sub_module, разрешения: разрешенияArr, }, }; }, ); const key = array.module.toLowerCase().split(' ').join('_'); акк[ключ] = { метка: массив.модуль, разрешения: родительское разрешение, ребенок: дочернее разрешение, }; возврат акк; }, {}, ); Как я могу изменить эту часть? Возможно, в будущем будет добавлено что-то новое или что-то изменится. [ 'просмотреть', 'добавить', 'редактировать', 'удалить', 'распечатать', ]
Я буду признателен за любые рекомендации и помощь в осуществлении этой трансформации. Спасибо!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение